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