UIPickView的基本使用

本文详细介绍如何使用UIPickerView,包括设置数据源、代理,以及如何响应用户选择。通过实例展示了如何配置多列、多行,并返回每行的显示内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

UIPickView的基本使用

//UIPickView和TableView一样,想要展示数据也要设置数据源和代理
//设置数据源
self.pickView.dataSource = self;
//设置代理
self.pickView.delegate = self;


//遵守数据源,代理协议:
@interface ViewController ()
<UIPickerViewDataSource,UIPickerViewDelegate>
@property (weak, nonatomic) IBOutlet UIPickerView *pickView;
@end


//实现数据源代理方法:
//总共有多少列
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView*)pickerView{

  return 3;
}


//第component列有多少行.
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{

  return 4;
}


//返回每一列的宽度
- (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component{

}


//返回每一行的高度
- (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component{

  return 50;
}


//每一行展示什么内容
- (nullable NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{

  return @"gaowei";
}


//返回每一行的视图UIView
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(nullable UIView *)view{

  UIButton *btn = [UIButton
  buttonWithType:UIButtonTypeContactAdd];
  return btn;
}


//当前选中的是哪一列的哪一行
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)rowinComponent:(NSInteger)component{
    
}

demo

//ViewController.h
@interface ViewController: UIViewController
@end

//ViewController.m
@interface ViewController()<UIPickViewDataSource, UIPickViewDeleate>
@property (nonatomic, weak) IBOutlet UILabel *showLabel;
@property (nonatomic,weak) IBOutlet UIPickView *pickView;
@property (nonatomic,strong) NSArray *array;
@end
@implementation ViewController
-(void)viewDidLoad{
   [super viewDidLoad];
   self.pickView.dataSource = self;
   self.pickView.delegate = self;
   
}
-(void)array{
   if(_array == nil){
      NSString *path = [[NSBundle mainBundle] pathForResource:@"foods.plist" ofType:nil];
       _array = [NSArray arrayWithContentsOfFile:path];    
   }
    return _array;
}

//实现数据源代理方法:
//总共有多少列
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView*)pickerView{

  return self.array.count;
}


//第component列有多少行.
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
       return self.array[component].count;
}


//返回每一列的宽度
- (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component{

}


//返回每一行的高度
- (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component{

  return 50;
}


//每一行展示什么内容
- (nullable NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{

  return self.array[component][row];
}


//返回每一行的视图UIView
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(nullable UIView *)view{

  UIButton *btn = [UIButton
  buttonWithType:UIButtonTypeContactAdd];
  return btn;
}


//当前选中的是哪一列的哪一行
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
    self.showLabel.text = self.array[component][row];
}

@end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值