2009-04-20 90 views
21

我想使用相同的viewController在同一個視圖中創建2個單獨的選擇器。 但是,如何爲他們設置單獨的代表和數據源?一個視圖中的多個PickerViews?

似乎無法得到它的工作。他們出現了相同的數據。如果您有任何示例代碼,將非常感謝。

謝謝。

回答

32

注意,數據源和委託協議,雙方的每一個方法包含UIPickerView *參數,例如:

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView 

您需要使用它的兩個實例之間進行區分,具體如下:

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView 
{ 

    if([pickerView isEqual: pickerOne]){ 
     // return the appropriate number of components, for instance 
     return 3; 
    } 

    if([pickerView isEqual: pickerTwo]){ 
     // return the appropriate number of components, for instance 
     return 4; 
    } 
} 
+0

這個偉大工程,感謝..唯一的問題是我得到警告說:「警告 - 控制非深遠void函數的末尾」你知道爲什麼? – 2009-04-20 21:32:59

15

最簡單的方法是使用pickerView的tag屬性。爲了便於閱讀,我通常在頭文件中定義這些內容。您可以在Interface Builder或代碼中設置標籤。

#define kPickerOne 0 
#define kPickerTwo 1 
在實現文件

則...

-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView 
{ 
    if(pickerView.tag == kPickerOne) 
    { 
      // do something with picker one 
    } 
    else if(pickerView.tag == kPickerTwo) 
    { 
      // the other picker 
    } 
}