iOS   发布时间:2022-05-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 如何让UIPickerview自动更新UILabel大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我有一个转换器应用程序,我希望它在我输入数字(应该转换)到文本字段时更新标签.我想让它自动更新,所以我不需要再次选择轮子上的单位进行更新. 这是我的代码: - (void)viewDidLoad { [super viewDidLoad]; { [super viewDidLoad]; // Do any additional setup after loading th
我有一个转换器应用程序,我希望它在输入数字(应该转换)到文本字段时更新标签.我想让它自动更新,所以我不需要再次选择轮子上的单位进行更新.

这是我的代码

- (void)viewDidLoad
{
   [super viewDidLoad];
  {
    [super viewDidLoad];
    // Do any additional setup after loading the view,typically from a nib.
    _convertFrom = @[@"MTPA",@"MMcf/day",@"Mill.Sm3/day",@"MMBTU",@"Boe/day"];

    _convertRates = @[ @1.0f,@133.4246575f,@3.780821918f,@142465.7534f,@23780.8f];

    _convertTo = @[@"MTPA",@23780.8f];
}
}

在这里干什么?

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];

}

-(IBACtion)textFieldReturn:(id)sender
{
    [sender resignFirstResponder];
}
-(IBACtion)BACkgroundTouched:(id)sender
{
    [inputText resignFirstResponder];
}


#pragma mark -
#pragma mark PickerView Datasource

 - (NSInteger)numberOfComponentsInPickerView:
(UIPickerView *)pickerView
{
return 2;
}

 - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:      (NSInteger)component
  {
 if (component == 0)  {
    return [_convertFrom count];
}
return [_convertTo count];
}


 - (NSString *) pickerView: (UIPickerView *)pickerView
          titleForRow:(NSInteger)row
         forComponent:(NSInteger)component
{
if (component == 0) {
    return [_convertFrom objectATindex:row];
}
return [_convertTo objectATindex:row];
}




 #pragma mark -
 #pragma mark PickerView Delegate
 -(void)pickerView:(UIPickerView *)pickerView didSELEctRow:(NSInteger)row
   inComponent:(NSInteger)component

 {
 float convertFrom = [[_convertRates objectATindex:[pickerView SELEctedRowInComponent:0]]     floatValue];
 float convertTo = [[_convertRates objectATindex:[pickerView SELEctedRowInComponent:1]] floatValue];

float input = [inputText.text floatValue];
float to = convertTo;
float from = convertFrom;
float convertValue = input;
float relative = to / from;
float result = relative * convertValue;
NSString *convertFromname = [_convertFrom objectATindex:[pickerView SELEctedRowInComponent:0]];
NSString *convertToName = [_convertFrom objectATindex:[pickerView SELEctedRowInComponent:1]];


NSString *resultString = [[NSString alloc]initWithFormat:
                          @" %.4f %@ = %.4f %@",convertValue,convertFromname,result,convertToName];
resultLabel.text = resultString; 



}

解决方法

您的问题与选择器视图无关.您希望监听文本字段的更改,并根据输入到文本字段中的最新文本更新转换和标签.

>设置在值更改时在文本字段上调用方法.
>选择器视图委托方法中的所有代码计算转换并更新标签需要放在另一个可以从两个地方调用方法中.
>在对文本字段中的更改做出反应的新方法中,调用刚刚创建的执行转换的方法并更新标签.

因此,此时您的选择器视图委托方法和文本字段更改方法都会调用从选择器获取转换的方法和文本字段中的文本,然后执行转换,最后更新标签.

编辑:更多细节

重构当前的选择器视图委托方法,如下所示:

-(void)pickerView:(UIPickerView *)pickerView didSELEctRow:(NSInteger)row inComponent:(NSInteger)component {
    [self updateConversionLabel];
}

- (void)updateConversionLabel {
    float convertFrom = [[_convertRates objectATindex:[pickerView SELEctedRowInComponent:0]] floatValue];
    float convertTo = [[_convertRates objectATindex:[pickerView SELEctedRowInComponent:1]] floatValue];

    float input = [inputText.text floatValue];
    float to = convertTo;
    float from = convertFrom;
    float convertValue = input;
    float relative = to / from;
    float result = relative * convertValue;
    NSString *convertFromname = [_convertFrom objectATindex:[pickerView SELEctedRowInComponent:0]];
    NSString *convertToName = [_convertFrom objectATindex:[pickerView SELEctedRowInComponent:1]];

    NSString *resultString = [[NSString alloc]initWithFormat:
        @" %.4f %@ = %.4f %@",convertToName];
    resultLabel.text = resultString; 
}

然后,您需要创建一个方法来处理对文本字段的更改:

- (void)textFieldChanged:(UITextField *)textField {
    [self updateConversionLabel];
}

现在在IB中,将textFieldChanged:方法连接到inputText文本字段的“value changed”事件.我不使用IB,所以我不知道这样做的确切术语.

大佬总结

以上是大佬教程为你收集整理的ios – 如何让UIPickerview自动更新UILabel全部内容,希望文章能够帮你解决ios – 如何让UIPickerview自动更新UILabel所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。