給iOS開發新手送點福利,簡述UIPikerView的屬性和用法

徐明清發表於2014-09-17

1.   numberOfComponents:返回UIPickerView當前的列數

NSInteger num = _pickerView.numberOfComponents;

NSLog( @"%d", num);

2. - (NSInteger)numberOfRowsInComponent:(NSInteger)component; 返回component列中有多少行。

NSInteger numInCp = [_pickerView numberOfRowsInComponent:0];

NSLog(@"%d",numInCp);

3. -  (CGSize)rowSizeForComponent:(NSInteger)component; 返回component中一行的尺寸。

 

CGSize size = [_pickerView rowSizeForComponent:0];

NSLog(@"%@", NSStringFromCGSize(size));

 

2.   delegate:

2.0 設定UIPickerView代理

_pickerView.delegate = self;

// 設定UIPickView每行顯示的內容

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

{

    return @"showData";

}

 

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

 

// 返回一個檢視,用來設定pickerView的每行顯示的內容。

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

{

    UIView *myView=[[UIView alloc]init];

    myView.backgroundColor = [UIColor redColor];

    return myView;

}

效果:

 

3.   dataSource:資料來源

#pragma mark  - dataSource method

// 設定每列顯示3行

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

{

    return 3;

}

// 設定顯示2列

-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView

{

    return 2;

}

4. showsSelectionIndicator:是否顯示指示器,預設為NO  

_pickerView.showsSelectionIndicator = NO;

 

注意:設定UIPickerView的行數與列數需要設定資料來源,遵守UIPickerViewDataSource,設定UIPickerView的內容需要設定代理,並且遵守代理方法UIPickerViewDelegate。

 

 

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

當點選UIPickerView的某一列中某一行的時候,就會呼叫這個方法。

6. 返回第component列每一行的高度

- (CGFloat)pickerView:(UIPickerView *)pickerView

rowHeightForComponent:(NSInteger)component;

 

7.重新整理某一列的資料

一旦呼叫了這個方法,就會重新給資料來源傳送訊息計算這列的行數、重新給代理髮送訊息獲得這列的內容

[pickerView reloadComponent:1];

8. 重新整理所有列的資料

- (void)reloadAllComponents;

9. 返回選中的是第component列的第幾行。

- (NSInteger)selectedRowInComponent:(NSInteger)component;                                  

 

 

相關文章