我在Xcode 4.02中使用了Interface Builder在View中添加了兩個UIPickerViews。它們連接到相同的委託和數據源(UIViewController)。在我的.h文件中,我還聲明瞭UIPickerViews並將它們作爲參考插座連接,如許多示例中所示。 在viewForRow我使用UILabels相同的NSMutable數組數組返回適當的值(這個數組填充在viewDidLoad中)。兩個UIPickerView對象可以共享相同的數據源數組嗎?
但是,我發現沒有標籤同時出現在兩個UIPickerViews中。例如,當應用程序啓動時,每個UIPickerView應顯示元素0,1和2.每個UIPickerView對viewForRow調用3次,但只有調用viewForRow的視圖纔會顯示前3行。另一個UIPickerView是空白的。如果我將第一個視圖向下滾動到第六個元素,然後回到第一個視圖,視圖將顯示前3個元素,但第二個視圖(顯示前3行的那個)現在不顯示任何內容。具體來說,兩個UIPickerView中不會同時出現數據數組元素。
這是預期嗎?每個UIPickerView應該有自己的支持數組 - 如果你使用它們?並非所有這些返回的視圖只是指針?就好像每個數組元素只能在任何時候最多顯示(指向)一次。
如果我使用兩個單獨的數據數組,那麼似乎沒有問題。但它確實意味着額外的內存和額外的編碼。
注:viewForRow我有一些代碼來設置標籤的尺寸:
UILabel *xx = (UILabel *)[self.array1 objectAtIndex:row];
CGSize rowSize = [thePickerView rowSizeForComponent:component];
CGRect labelRect = CGRectMake (0, 0, rowSize.width, rowSize.height);
[xx setFrame:labelRect];
此處設定的值時,該行後顯示爲空白甚至不發生變化。
謝謝。這就說得通了。 – George