聲明 歡迎轉載,但是請尊重作者勞動成果,轉載請保留此框內聲明,謝謝。 文章出處:http://blog.csdn.net/iukey |
選取器被用來取代PC上面的下拉式功能表,它是一個大大的滾輪,它佔用固定的大小 320×216.
一、建立
大小雖然固定,但是位置可以任意(不過橫向被充滿,咱也只能改變縱向位置)。與UItableView 類似,UIpickerView 類也需要一個資料來源。與表格視圖不同的是,選取器不使用索引路徑,而是用一個NSinteger 值來標識每一行。選取器可以有多個錶盤,每個都可以,作為一個組件引用。
選取器視圖使用代理作為資料來源,因此資料來源可以存在於另一個類或者視圖控制器中。
UIPickerView* pickerView = [ [ UIpickerView alloc] initWithFrame:CGRectmake(0.0,100.0,0.0,0.0)];pickerView.delegate = self;pickerView.dataSource = self;
二、屬性
噁心的蘋果把許多屬性保留為私人的,開放給開發人員的少的可憐,可憐到唯一可用的外觀選項就是選擇視窗。
將選取器的 showsSelectionIndicator 屬性設定為YES,可以在當前選擇上顯示一個透明視窗:
pickerView.showsSelectionIndicator = YES;
三、資料來源
建立好介面就要考慮資料來源了。比必須實現下列資料來源委託方法,這些方法是 UIPickerViewDataSource 協議的必要方法。
numberOfComponentsInPickerView
滾輪數量
numberOfRowsInComponent
為選取器中每個滾輪設定不同數目的行。這個方法返回指定滾輪的行數。
除此之外,UIPickerViewDelegate 協議還實現了下列方法,來擷取選取器組件特定的資訊。
titleForRow
返回對應滾輪(組件)的給定行的實際錶盤取值。會以 NSString 對象返回這些值。
viewForRow
這個方法可以重寫選取器顯示組件錶盤預設行為,令任何 UIView 類都可以在其中顯示。
widthForComponet
返回給定組件(滾輪)的寬度。如果這方法未實現,選取器會自動調整到合適的寬度。
rowHeightComponent
返回給定組件(滾輪)的高度。如果這個方法未實現,選取器會自動調整到合適的高度。
四、顯示
[ self.view addSubview:pickerView ];
五、讀取選取器
使用視圖的selectedRowInComponent 方法,是獲得選取器視圖被選中列的索引的最直接的方法:
int selectedRow = [ pickerView selectedRowInComponent:0 ];
也有一個委託方法,當使用者選擇了選取器中一行時,會收到通知。用這個方法可以向對象發出警報,這樣它就可以對新行做出反應:
- (void)pickerView:(UIPickerView*)pickerView didSelectedRow:(NSInteger)row inComponent:(NSInteger)component{/*添加代碼,根據選中行盡享相應操作*/}