#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= выбранный возраст;