UIPicker selectRow

Я пытаюсь выбрать первый ряд по умолчанию.. Здесь я пытался

-(void)pickerViewLoaded{

   [pickerView setShowSelectionIndicator:YES];
   pickerView.delegate = self;
   [pickerView reloadAllComponents];
   [pickerView selectRow:1 inComponent:0 animated:YES]
}

Он прекрасно работает, когда я вызываю этот метод для viewDidLoad(), который вызывает метод didSelectRow, но он выбирает вторую строку этого компонента, а не первую. когда я вызываю с помощью [pickerView selectRow:0 inComponent:0 animated:YES], тогда он никогда не вызывает метод didSelectRow.

Другая проблема заключается в том, что когда я вызываю метод pickerViewLoaded при выборе сегментированного элемента управления, он не вызывает метод didSelectRow. я до сих пор не могу понять, когда он может вызвать с viewDidLoad, почему бы не с segmentedControl.

Спасибо всем,

3 ответа

Кажется, старая нить, во всяком случае, я подумал поделиться своим опытом.

У меня была такая же проблема и переехал

[pickerView selectRow:0 inComponent:0 animated:YES];

в

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component;

Я вызываю selectRow:inComponent:animated только после возвращения titleForRow, вызванного для последней строки, с использованием уведомления.

Я просто столкнулся с той же проблемой и понял: делегат не будет вызван, если выбранная строка не изменится. Кроме того, строка 0 выбрана по умолчанию, поэтому повторно выбирая строку 0 в viewDidLoad не вызывает делегата. В моем случае я смог вызвать метод делегата напрямую, возможно, это решение и в вашем случае.

Теперь, когда вопрос был поднят из мертвых...

Я думаю, что selectRow использует индекс, который начинается с 0, а не с 1. Итак, 0 - это первая строка, а 1 - вторая строка.

Другие вопросы по тегам