大佬教程收集整理的这篇文章主要介绍了ios – 如何让UIPickerview自动更新UILabel,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这是我的代码:
- (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,请注明来意。