Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 连接UITextField以更新标签_Objective C_Ios_Interface Builder - Fatal编程技术网

Objective c 连接UITextField以更新标签

Objective c 连接UITextField以更新标签,objective-c,ios,interface-builder,Objective C,Ios,Interface Builder,我还在开发我的转换器应用程序,我又一次偶然发现了一个问题 当试图在文本字段中进行所有编辑以触发计算代码时,没有发生任何事情。这就是atm发生的情况: 在我更改PickerWheel中的某些内容之前,计算不会触发。我不是在责怪代码,因为这是我第一次做的 在试图解决这个问题时,我从一个朋友那里得到了一些帮助,我添加了以下代码以使其正常工作 首先, - (void)textFieldChanged:(UITextField *)textField { [self updateConversionLab

我还在开发我的转换器应用程序,我又一次偶然发现了一个问题

当试图在文本字段中进行所有编辑以触发计算代码时,没有发生任何事情。这就是atm发生的情况:

在我更改PickerWheel中的某些内容之前,计算不会触发。我不是在责怪代码,因为这是我第一次做的

在试图解决这个问题时,我从一个朋友那里得到了一些帮助,我添加了以下代码以使其正常工作

首先,

- (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自由代表