2010-08-18 48 views
-1

我試圖選擇第一行作爲默認.. 在這裏,我試圖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。

謝謝大家,

回答

2

似乎是一個古老的線程,無論如何,我想分享我的經驗。

我有同樣的問題和提出的

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

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

我所說的selectRow:只使用一個通知返回呼籲最後一排的titleForRow後動畫:inComponent 。

1

現在這個問題已經從死裏復活...

我認爲selectRow使用從0開始的索引 - 而不是1所以0是第一行,1是第二行。

1

我剛剛遇到同樣的問題,並指出:如果選定的行沒有更改,委託不會被調用。另外,默認情況下選擇第0行,因此重新選擇viewDidLoad中的第0行不會觸發委託。在我的情況下,我能夠直接調用委託方法,也許這也是您的案例的解決方案。