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;