UIPickerView didSelectRow发布iPhone

UIPickerView didSelectRow发布iPhone,iphone,objective-c,xcode,cocoa-touch,Iphone,Objective C,Xcode,Cocoa Touch,我有三个标签,我想用pickerview中选定的行填充它们。类似于如果第一个标签已填充,则第二个标签应填充选定的行值,如果第一个和第二个标签都已填充,则第三个标签应填充 我正在尝试这段代码,但它只为第一个标签赋值 -(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component { NSString *selectedReward

我有三个标签,我想用pickerview中选定的行填充它们。类似于如果第一个标签已填充,则第二个标签应填充选定的行值,如果第一个和第二个标签都已填充,则第三个标签应填充

我正在尝试这段代码,但它只为第一个标签赋值

-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row
      inComponent:(NSInteger)component
{

    NSString *selectedReward = [self.rewards objectAtIndex:row];



    if ([reward1.text isEqualToString:selectedReward]) {

        if ([reward2.text isEqualToString:selectedReward]) {

            reward3.text = selectedReward;
        }

        reward2.text = selectedReward;
    }
    else  {

        reward1.text = selectedReward;
    }

}

通过比较其
长度来尝试检查
UILabel

if ([label1.text length]==0){
   //set label 1
}
else if ([label2.text length]==0){
   //set label 2
}
else{
   //set label 3.
}

我认为这是因为您总是选择不同的行,而行文本是不同的。然后,所选值始终与第一个标签的文本不同,因此函数将设置标签1的文本

我想你应该测试一下课文的长度

if ([reward1.text length] == 0) {reward1.text = selectedReward;} // and so on

在代码中,您正在使用
selectedward
检查标签文本

因此,如果每次选择不同的选择器组件,则它将只更新第一个标签(将输入代码的其他部分),但如果选择相同的选择器组件(与为第一个标签选择的相同),则它将输入if部分


您可以继续执行@
loser1089906
建议的操作。

是否检查您的[self.rewards objectAtIndex:row]是否在每行返回不同的值?它每次返回不同的值,但只分配给一个标签