UIPickerView didSelectRow выпускает iPhone - PullRequest
0 голосов
/ 11 марта 2012

У меня есть три метки, которые я хочу заполнить выбранной строкой из окна выбора.Например, если первая метка уже заполнена, тогда вторая должна быть заполнена выбранным значением строки, а если первая и вторая уже заполнены, то третья должна быть заполнена.

Я пытаюсь этот код, но он присваивает значение только первой метке.

-(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 ]

1 голос
/ 11 марта 2012

Я думаю, это потому, что вы всегда выбираете другую строку, а текст строки отличается.Тогда выбранное значение всегда отличается от текста первой метки, поэтому функция установит текст label1.

Я думаю, вам следует проверить длину текста.

1 голос
/ 11 марта 2012

В вашем коде вы проверяете текст метки с помощью selectedReward.

Таким образом, если вы выбираете каждый раз другой компонент средства выбора, тогда он просто обновит первую метку (введет в другой части вашего кода), но если вы выберете тот же компонент средства выбора (как вы выбрали для первой метки)тогда он войдет, если часть.

Вы можете продолжить с того, что @ loser1089906 предложил.

0 голосов
/ 11 марта 2012

попробуйте проверить UILabel, сравнив его length.

if ([label1.text length]==0){
   //set label 1
}
else if ([label2.text length]==0){
   //set label 2
}
else{
   //set label 3.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...