2011-04-12 34 views
0

我有一個UI問題。起初,我想有2個採購員來填充2個不同的標籤。問題是在ui上使用2個拾取器會佔用窗口上的所有空間,並且無法調整拾取器的大小。使用UI Picker到控制器2不同標籤

我意識到,因爲我在每個拾取器中使用相同的數據,所以我應該能夠使用一個拾取器控件逃脫。除非控件的焦點沒有正確完成,否則對用戶來說會有點困惑。

我希望它的工作有點像在鍵盤中出現在文本框中。

所以我有一個簡單的用戶界面

獲取數據1:Textbox1的 獲取數據2:TextBox2中

挑選器

當用戶點擊裏面TextBox1中選取器出現,而不是代替鍵盤和使用選擇器中的選定數據填充文本框。對於textbox2也是如此。

有人可以給我一個這樣做可能完成的樣本,還是更好的方法來處理這個問題?你們如何處理在同一窗口上必須有2個下拉菜單?

回答

3

如果您的文本不是太長,則帶有兩個組件和兩個標籤(或文本框)的選取器是一個很好的解決方案。

編輯補充

下面是與我一起翻飛兩個分量的選擇器。

UIPickerView with two components

進一步編輯添加

下面是一些代碼來告訴你它是如何做:

設置組件

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView { 
    return 2; 
} 

搭建行

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { 
    if (component == 0) { 
     return [array1 count]; 
    } else { 
     return [array2 count]; 
    } 
} 

基於拾取

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component { 
    if (component == 0) { 
     label1.text = [array1 objectAtIndex:row]; 
    } else { 
     label2.text = [array2 objectAtIndex:row]; 
    } 
} 
+0

你可以有一個選擇器2種不同成分的變化對行

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component { if (component == 0) { return [array1 objectAtIndex:row]; } else { return [array2 objectAtIndex:row]; } } 

更改標籤提供的數據?你能告訴我一個側面的樣本A填充標籤1和B側填充標籤2嗎? – 2011-04-12 02:05:37

+0

@馬特 - 你能告訴我這個來源嗎?我不知道你可以這樣做。你也可以在第二個中間添加第三個輪子,它只是一個「 - 」,那個輪子不會移動,所以你的例子中的選擇線將讀取Banana-Monkey。感謝您也對我進行展示 – 2011-04-12 02:23:34

+0

@Nick發佈了一些代碼。添加中間連字符需要(a)返回3給'numberOfComponentsInPickerView'; (b)修改'numberOfComponentsInPickerView'從組件1返回array1的值,組件1返回'@「 - 」',返回'titleForRow'中組件2的值2。 (c)修改'didSelectRow'以基於'component == 0'和'component == 2'值更改標籤;和(d)實現'UIPickerViewDelegate'方法'pickerView:widthForComponent:'方法來調整組件的大小(可能是150,20或150等等)。 – 2011-04-12 02:36:58