執行個體講解iOS應用開發中UIPickerView滾動選擇欄的用法_IOS

來源:互聯網
上載者:User

基礎
1.UIPickerView 屬性

資料來源(用來告訴UIPickerView有多少列多少行)

複製代碼 代碼如下:

@property(nonatomic,assign) id dataSource;

   
代理(用來告訴UIPickerView每1列的每1行顯示什麼內容,監聽UIPickerView的選擇)
複製代碼 代碼如下:

@property(nonatomic,assign) id   delegate;

   
是否要顯示選中的指標
複製代碼 代碼如下:

@property(nonatomic)   BOOL   showsSelectionIndicator;

   
一共有多少列
複製代碼 代碼如下:

@property(nonatomic,readonly) NSInteger numberOfComponents;

2.UIPickerView方法

重新重新整理所有列

複製代碼 代碼如下:

- (void)reloadAllComponents;

重新重新整理第component列

複製代碼 代碼如下:

- (void)reloadComponent:(NSInteger)component;

主動選中第component列的第row行

複製代碼 代碼如下:

- (void)selectRow:(NSInteger)row inComponent:(NSInteger)component animated:(BOOL)animated;

獲得第component列的當前選中的行號

複製代碼 代碼如下:

- (NSInteger)selectedRowInComponent:(NSInteger)component;

3.UIPickerView資料來源方法

一共有多少列

複製代碼 代碼如下:

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

第component列一共有多少行
複製代碼 代碼如下:

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component;

4.UIPickerView代理方法
第component列的寬度是多少

複製代碼 代碼如下:

- (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component;

第component列的行高是多少
複製代碼 代碼如下:

- (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component;

第component列第row行顯示什麼文字

複製代碼 代碼如下:

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component;

第component列第row行顯示怎樣的view(內容)
複製代碼 代碼如下:

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view;

選中了pickerView的第component列第row行
複製代碼 代碼如下:

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component;

執行個體
UIPickerView 作為iOS的一個常用控制項相信大家都有這方面的需求。
今天我們就簡單建立一個:
建立項目 命名:TestUIPickerView
在預設產生的ViewController中建立UIPickerView
首先在viewDidLoad 的方法中建立

複製代碼 代碼如下:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
     
    // 選擇框 
    UIPickerView *pickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 100, 320, 216)]; 
    // 顯示選中框 
    pickerView.showsSelectionIndicator=YES; 
    pickerView.dataSource = self; 
    pickerView.delegate = self; 
    [self.view addSubview:pickerView]; 
     
    _proTimeList = [[NSArray alloc]initWithObjects:@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"10",nil]; 
    _proTitleList = [[NSArray alloc]initWithObjects:@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"10",nil]; 
                  
                      


然後,我們建立相關的代理方法
UIPickerViewDataSource 相關代理
複製代碼 代碼如下:

#pragma Mark -- UIPickerViewDataSource 
// pickerView 列數 
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView { 
    return 2; 

 
// pickerView 每列個數 
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { 
    if (component == 0) { 
        return [_proTitleList count]; 
    } 
     
    return [_proTimeList count]; 


UIPickerViewDelegate 相關代理方法
複製代碼 代碼如下:

#pragma Mark -- UIPickerViewDelegate 
// 每列寬度 
- (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component { 
     
    if (component == 1) { 
        return 40; 
    } 
    return 180; 

// 返回選中的行 
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component 

    if (component == 0) { 
        NSString  *_proNameStr = [_proTitleList objectAtIndex:row]; 
        NSLog(@"nameStr=%@",_proNameStr); 
    } else { 
        NSString  *_proTimeStr = [_proTimeList objectAtIndex:row]; 
        NSLog(@"_proTimeStr=%@",_proTimeStr); 
    } 
     

 
//返回當前行的內容,此處是將數組中數值添加到滾動的那個顯示欄上 
-(NSString*)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component 

    if (component == 0) { 
        return [_proTitleList objectAtIndex:row]; 
    } else { 
        return [_proTimeList objectAtIndex:row]; 
         
    } 


完成以上代碼之後 我們就可以運行項目查看效果
如下圖:

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.