UIPickerView didSelectRow发行iPhone

时间:2012-03-11 13:40:56

标签: iphone objective-c xcode cocoa-touch

我有三个标签,我想用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;
    }

}

3 个答案:

答案 0 :(得分:1)

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

我认为你应该测试文字长度。

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

答案 1 :(得分:1)

在您的代码中,您使用selectedReward检查标签的文本。

因此,如果您每次选择不同的选择器组件,那么它将只更新第一个标签(将输入代码的else部分),但是如果您选择相同的选择器组件(如您为第一个标签选择的那样)那么它将会输入if部分。

您可以继续使用@ loser1089906建议的内容。

答案 2 :(得分:0)

通过比较UILabel来尝试检查length

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