UIPicker selectRow - PullRequest
       27

UIPicker selectRow

0 голосов
/ 18 августа 2010

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

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

2 голосов
/ 20 мая 2011

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

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

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

до

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

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

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

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

1 голос
/ 20 мая 2011

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

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

...