2011-03-30 54 views
0

我有一個UIPickerView有兩個組件。在組件1的行數取決於組件0我想以下幾點:如何選擇行甚至UIPickerView

// [picker reloadAllComponents]; 
[picker selectRow:5 inComponent:0 animated:NO]; 
[picker reloadComponent:1]; // [picker reloadAllComponents]; 
[picker selectRow:3 inComponent:1 animated:NO]; 
// [picker reloadAllComponents]; 

什麼情況是,組件0設置爲指數5和部件1顯示的信息好像指數0被選中組件0!

回答

0

我嘗試了完全相同的事情,它完美的作品。下面是一些相關的代碼:

此代碼是唯一相關的,如果你手動選擇行:

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component 
{ 
    if (component == 0) { 
     [pickerView reloadComponent:1]; 
    } 
} 

我增加了一個按鈕,當它拍了拍執行代碼。

- (void)buttonAction:(id)sender { 
    [pickerView selectRow:3 inComponent:0 animated:NO]; 
    [pickerView reloadComponent:1]; 
    [pickerView selectRow:1 inComponent:1 animated:NO]; 
} 

這裏的代碼的最後一塊相關的,我有:

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component 
{ 
    switch (component) { 
     case 0: 
      return 5; 
      break; 
     case 1: 
      return [pickerView selectedRowInComponent:0]; 
      break; 
     default: 
      break; 
    } 
    return 5; 
} 

一切正常,所以你張貼的線路不引起問題的人。如果在閱讀我的代碼(經過測試和工作)後無法弄清楚,我建議您發佈一些更多的代碼。

+0

我試圖做一個樣本,它...工作正常。我認爲在我的原始代碼中,問題出在鍵盤和椅子之間。如果我發現否則我會更新線程 – rp90 2011-04-01 16:53:27