UIPickerView開發一般選擇區域或者分級資料的時候會使用到,類似于前端中用到樹狀結構,不過PC上一般都是從上到下的分級,使用UIPickView是從左到右實作,可以動态的設定UIPickView中中行列資料,将結果顯示在文本輸入框裡,簡單的定義一下資料源。通過聲明協定捕獲事件,展示結果,比較簡單,進入正題.
頁面布局比較簡單,一個UIPickerView,一個文本框:

頭檔案中的聲明,實作了UIPickerViewDelegate,UIPickerViewDataSource協定:
1
2
3
4
5
6
<code>@interface</code> <code>ViewController : UIViewController <UIPickerViewDelegate,UIPickerViewDataSource></code>
<code>@property</code> <code>(weak, </code><code>nonatomic</code><code>) </code><code>IBOutlet</code> <code>UIPickerView *pickView;</code>
<code>@property</code> <code>(weak, </code><code>nonatomic</code><code>) </code><code>IBOutlet</code> <code>UITextField *areaTextField;</code>
<code>@end</code>
定義存儲資料的數組:
<code>@interface</code> <code>ViewController ()</code>
<code>{</code>
<code> </code><code>NSArray</code> <code>*areaArr;</code>
<code> </code><code>NSMutableArray</code> <code>*teamArr;</code>
<code>}</code>
初始化資料:
7
8
9
10
11
12
<code>- (</code><code>void</code><code>)viewDidLoad {</code>
<code> </code><code>[</code><code>super</code> <code>viewDidLoad];</code>
<code> </code><code>// Do any additional setup after loading the view, typically from a nib.</code>
<code> </code><code>areaArr=@[@</code><code>"西南區"</code><code>,@</code><code>"中央區"</code><code>,@</code><code>"東南區"</code><code>,@</code><code>"大西洋區"</code><code>,@</code><code>"西北區"</code><code>,@</code><code>"太平洋區"</code><code>];</code>
<code> </code><code>teamArr=[[</code><code>NSMutableArray</code> <code>alloc] init];</code>
<code> </code><code>[teamArr addObject:@[@</code><code>"馬刺"</code><code>,@</code><code>"灰熊"</code><code>,@</code><code>"小牛"</code><code>,@</code><code>"火箭"</code><code>,@</code><code>"鹈鹕"</code><code>]];</code>
<code> </code><code>[teamArr addObject:@[@</code><code>"活塞"</code><code>,@</code><code>"步行者"</code><code>,@</code><code>"騎士"</code><code>,@</code><code>"公牛"</code><code>,@</code><code>"雄鹿"</code><code>]];</code>
<code> </code><code>[teamArr addObject:@[@</code><code>"熱火"</code><code>,@</code><code>"魔術"</code><code>,@</code><code>"老鷹"</code><code>,@</code><code>"奇才"</code><code>,@</code><code>"黃蜂"</code><code>]];</code>
<code> </code><code>[teamArr addObject:@[@</code><code>"凱爾特人"</code><code>,@</code><code>"76人"</code><code>,@</code><code>"尼克斯"</code><code>,@</code><code>"籃網"</code><code>,@</code><code>"猛龍"</code><code>]];</code>
<code> </code><code>[teamArr addObject:@[@</code><code>"森林狼"</code><code>,@</code><code>"掘金"</code><code>,@</code><code>"爵士"</code><code>,@</code><code>"開拓者"</code><code>,@</code><code>"雷霆"</code><code>]];</code>
<code> </code><code>[teamArr addObject:@[@</code><code>"國王"</code><code>,@</code><code>"太陽"</code><code>,@</code><code>"湖人"</code><code>,@</code><code>"快船"</code><code>,@</code><code>"勇士"</code><code>]];</code>
設定PickerView的列數:
<code>- (</code><code>NSInteger</code><code>)numberOfComponentsInPickerView:(UIPickerView *)pickerView{</code>
<code> </code><code>return</code> <code>2;</code>
傳回行數:
<code>- (</code><code>NSInteger</code><code>)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(</code><code>NSInteger</code><code>)component{</code>
<code> </code><code>//判斷列</code>
<code> </code><code>if</code> <code>(component==0) {</code>
<code> </code><code>return</code> <code>[areaArr count];</code>
<code> </code><code>}</code><code>else</code><code>{</code>
<code> </code><code>//判斷0列中目前的行号</code>
<code> </code><code>NSInteger</code> <code>currentRow=[pickerView selectedRowInComponent:0];</code>
<code> </code><code>return</code> <code>[teamArr[currentRow] count];</code>
<code> </code><code>}</code>
設定每行每列中的資料:
<code>- (</code><code>NSString</code> <code>*)pickerView:(UIPickerView *)pickerView titleForRow:(</code><code>NSInteger</code><code>)row forComponent:(</code><code>NSInteger</code><code>)component{</code>
<code> </code><code>//o列從區域數組中選擇</code>
<code> </code><code>return</code> <code>areaArr[row];</code>
<code> </code><code>//根據0列中選擇的行号</code>
<code> </code><code>return</code> <code>teamArr[currentRow][row];</code>
選擇完成之後的事件:
<code>- (</code><code>void</code><code>)pickerView:(UIPickerView *)pickerView didSelectRow:(</code><code>NSInteger</code><code>)row inComponent:(</code><code>NSInteger</code><code>)component{</code>
<code> </code><code>[pickerView reloadComponent:1];</code>
<code> </code><code>NSInteger</code> <code>areaRow=[pickerView selectedRowInComponent:0];</code>
<code> </code><code>NSInteger</code> <code>teamRow=[pickerView selectedRowInComponent:1];</code>
<code> </code><code>[_areaTextField setText:[</code><code>NSString</code> <code>stringWithFormat:@</code><code>"%@-%@"</code><code>,areaArr[areaRow],teamArr[areaRow][teamRow]]];</code>
<code> </code>
具體效果如下:
本文轉自Fly_Elephant部落格園部落格,原文連結:http://www.cnblogs.com/xiaofeixiang/p/4245884.html,如需轉載請自行聯系原作者