1-е значение не выбирается в режиме выбора

#iphone #ios #uipickerview

#iPhone #iOS #uipickerview

Вопрос:

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

вот мой код

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



    switch (tagVlaue) {

    case 0:
    { 
        if(gender==YES)
       {

           NSLog(@"Selected Color: %@. Index of selected color: %i", [checkArray objectAtIndex:row], row);

           selectedgender=[checkArray objectAtIndex:row];
           NSLog(@"selected checkgender %@",selectedgender);
           genderlabel.text=selectedgender;
          // checkgender=NO;
       }
     else 
         {

             NSLog(@"Selected Color: %@. Index of selected color: %i", [genderArray objectAtIndex:row], row);

             selectedgender=[genderArray objectAtIndex:row];
             NSLog(@"selected gender %@",selectedgender);
             genderlabel.text=selectedgender;
            // checkgender=YES; 


        }
        //genderlabel
    }
        break;
    case 1:
    {
        if(gender==NO)
        {
        NSLog(@"Selected Color: %@. Index of selected color: %i", [seekingArray objectAtIndex:row], row);   
        selectedseek=[seekingArray objectAtIndex:row];
        NSLog(@"selected seeking %@",selectedseek);
        seeklabel.text=selectedseek;
        }
        else {
            NSLog(@"Selected Color: %@. Index of selected color: %i", [seekCheckArray objectAtIndex:row], row); 
            selectedseek=[seekCheckArray objectAtIndex:row];
            NSLog(@"selected seeking %@",selectedseek);
            seeklabel.text=selectedseek;
        }

    }
        break;

    case 2:
        NSLog(@"Selected Color: %@. Index of selected color: %i", [ageArray objectAtIndex:row], row);

        selectedage=[ageArray objectAtIndex:row];
        NSLog(@"selected age %@",selectedage);
        label.text=selectedage;


        break;
    case 3:
        NSLog(@"Selected Color: %@. Index of selected color: %i", [feetArray objectAtIndex:row], row);  
        selectedheight=[feetArray objectAtIndex:row];
        NSLog(@"selected height %@",selectedheight);
        heightlabel.text=selectedheight;


        break;

    case 4:

        NSLog(@"Selected Color: %@. Index of selected color: %i", [weightArray objectAtIndex:row], row);    
        selectedweight=[weightArray objectAtIndex:row];
        NSLog(@"selected weight %@",selectedweight);
        weightlabel.text=selectedweight;

        break;

    case 5:
        NSLog(@"Selected Color: %@. Index of selected color: %i", [enthnicityArray objectAtIndex:row],row);


        selectedethnicity=[enthnicityArray objectAtIndex:row];
        NSLog(@"selected weight %@",selectedethnicity);
        ethnicitylabel.text=selectedethnicity;

        break;

    case 6:
        NSLog(@"Selected Color: %@. Index of selected color: %i", [typeArray objectAtIndex:row],row);


        selectedtype=[typeArray objectAtIndex:row];
        NSLog(@"selected weight %@",selectedtype);
        typelabel.text=selectedtype;

        break;


    default:
        break;
}
  

заранее спасибо

Комментарии:

1. Пожалуйста, получите дополнительную информацию. Код?

2. что такое tagVlaue?? возможно, это из-за этого, установите NSLog в регистр по умолчанию и посмотрите на проблему…

Ответ №1:

Метод делегирования:

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

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

Комментарии:

1. вам необходимо сохранить ранее выбранное значение средства выбора.

2. я использую этот метод делегирования, но не показывает 1-е значение при прокрутке, затем отображается первое значение

Ответ №2:

Используйте метод делегирования UIPickerViewDelegate – pickerView:didSelectRow:inComponent: , чтобы узнать, какая строка была выбрана, если пользователь ничего не выбрал, это не будет вызвано.

Комментарии:

1. я использую этот метод делегирования, но не показывает 1-е значение при прокрутке, затем отображается первое значение

2. — (void)pickerView: (UIPickerView *)В окне выбора была выбрана строка: (NSInteger) компонент без компонента: (NSInteger)компонент {NSLog(@»Выбранный цвет: %@. Индекс выбранного цвета: %i», [возраст объекта: строка], строка); выбранный возраст=[Возраст объекта: строка]; NSLog (@»выбранный возраст %@», выбранный возраст); label.text= выбранный возраст;