Objective c 连接UITextField以更新标签
我还在开发我的转换器应用程序,我又一次偶然发现了一个问题 当试图在文本字段中进行所有编辑以触发计算代码时,没有发生任何事情。这就是atm发生的情况: 在我更改PickerWheel中的某些内容之前,计算不会触发。我不是在责怪代码,因为这是我第一次做的 在试图解决这个问题时,我从一个朋友那里得到了一些帮助,我添加了以下代码以使其正常工作 首先,Objective c 连接UITextField以更新标签,objective-c,ios,interface-builder,Objective C,Ios,Interface Builder,我还在开发我的转换器应用程序,我又一次偶然发现了一个问题 当试图在文本字段中进行所有编辑以触发计算代码时,没有发生任何事情。这就是atm发生的情况: 在我更改PickerWheel中的某些内容之前,计算不会触发。我不是在责怪代码,因为这是我第一次做的 在试图解决这个问题时,我从一个朋友那里得到了一些帮助,我添加了以下代码以使其正常工作 首先, - (void)textFieldChanged:(UITextField *)textField { [self updateConversionLab
- (void)textFieldChanged:(UITextField *)textField
{
[self updateConversionLabel];
}
我知道它有两个,这可能是错误的,但我想两个都试试
-(IBAction)textFieldChanged:(UITextField *)textField;
-(void)textFieldChanged:(UITextField *)textField;
计算如下:
#pragma mark -
#pragma mark PickerView Delegate
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
[self updateConversionLabel];
}
- (void)updateConversionLabel
{
float convertFrom = [[_convertRates objectAtIndex:[picker selectedRowInComponent:0]] floatValue];
float convertTo = [[_convertRates objectAtIndex:[picker 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:[picker selectedRowInComponent:0]];
NSString *convertToName = [_convertFrom objectAtIndex:[picker selectedRowInComponent:1]];
NSString *resultString = [[NSString alloc]initWithFormat:
@" %.4f %@",result, convertToName];
resultLabel.text = resultString;
NSString *formelString = [[NSString alloc]initWithFormat:
@" %.4f %@=", convertValue, convertFromName];
formelLabel.text = formelString;
}
我认为错误可能在interface builder中,因此这里是连接
有没有简单的解决办法 确保视图控制器符合UITextFieldDelegate。将viewController设置为interface builder中UITextField的代理。然后在viewController中实现此委托方法:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;
每次更改textfield时,都会触发该委托方法,因此会触发其中的计算。确保视图控制器符合UITextFieldDelegate。将viewController设置为interface builder中UITextField的代理。然后在viewController中实现此委托方法:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;
每次更改文本字段时,该委托方法都会被激发,因此在其中触发您的计算。不要使用更改的操作值,而要对文本字段使用编辑更改。不要使用更改的操作值,将编辑更改用于文本字段。将textFieldChanged操作更改为“编辑更改”,并将所有计算代码放入textFieldChanged操作方法中 将textFieldChanged操作更改为“Editing Changed”,并将所有计算代码放入textFieldChanged操作方法中 如果在设置label.text值之前添加日志,则该日志是否在控制台中输出?如果在此处添加,则它不会输出。NSString*resultString=[[NSString alloc]initWithFormat:@%.4f%@,结果,convertToName];NSLog@Test; resultLabel.text=resultString@这是个坏兆头吗PNo log语句意味着我们甚至没有看到代码进入UpdateVersionLabel方法。将日志添加到picker didSelectRow并确保已触发。当选择器改变时,以及当Edwin在下面提到的textfield改变时,您都需要更新您的值,以确保您也实现了textfield委托。是的,我理解。问题是将上面看到的代码连接到interface builder中的内容@propstm如果在设置标签之前添加日志。text值是在控制台中输出的日志吗?如果在此处输入,则不会输出。NSString*resultString=[[NSString alloc]initWithFormat:@%.4f%@,结果,convertToName];NSLog@Test; resultLabel.text=resultString@这是个坏兆头吗PNo log语句意味着我们甚至没有看到代码进入UpdateVersionLabel方法。将日志添加到picker didSelectRow并确保已触发。当选择器改变时,以及当Edwin在下面提到的textfield改变时,您都需要更新您的值,以确保您也实现了textfield委托。是的,我理解。问题是将上面看到的代码连接到interface builder中的内容@对不起,这对我帮助不大。你能进一步解释一下吗?我应该把这个代码放在哪里?我没有文本字段的代表,我需要这个吗?我想它一点也不复杂,只是问题代码的快速修复。对不起,这对我帮助不大。你能进一步解释一下吗?我应该把这个代码放在哪里?我没有文本字段的代表,我需要这个吗?我认为这一点都不复杂,只是一个问题中的代码的快速修复。Soz mate,你迟到了2次,4次da自由代表,Soz mate,你迟到了2次,4次da自由代表