首页 > 代码库 > UI :使用 UIPickerView 来选择数据
UI :使用 UIPickerView 来选择数据
问题:想让用户在程序中从一个列表中选择数据。
通过 Picker view 可以显示一系列的值给用户,并且可以让用户选择其中一个。iPhone 中 Clock 程序里面的时间选择就是一个非常好的例子
.h文件:
#import <UIKit/UIKit.h>@interface ViewController : UIViewController<UIPickerViewDataSource,UIPickerViewDelegate>@property(nonatomic,strong)UIPickerView *myPicker;@end
.m:
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. self.view.backgroundColor = [UIColor whiteColor]; self.myPicker = [[UIPickerView alloc]init]; self.myPicker.center = self.view.center; self.myPicker.delegate = self;//设置代理 self.myPicker.showsSelectionIndicator = YES; [self.view addSubview:self.myPicker]; //此时pickerView没有数据,效果不好. ///为选择器添加数据:首先给 picker view 指定一个 data source,然后确保 view controller 遵循相关的协议。UIPickerView 的 data source 实例必须遵循 UIPickerViewDataSource 协议。}//UIPickerViewDataSource @required协议方法的实现-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{ //这个方法主要是用来为你的选择器添加组件的,如果你需要多个组件,你可以在这个里面进行添加. return 1;}-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{ //顾名思义,这个方法表示你的一个组件中有多少个选项。 return 10;}//UIPickerViewDelegate 协议方法-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{ NSString *result = nil; if ([pickerView isEqual:_myPicker]) { result = [NSString stringWithFormat:@"Row%ld",row+1]; } return result;}
如图:
我们现在不能检测到用户实际选择的项 ,获得用户选择的数据。我们可以通过调用 UIPickerViewselectedRowIncomponent:方法。
如果程序在运行时,你需要修改picker view中的值,那么需要从data source和delegate 中 reload 相关数据。可以通过使用 reloadAllComponent:方法来强制重新加载所有数据,或者 使用 reloadComponent:方法来加载指定组件的数据。
UI :使用 UIPickerView 来选择数据
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。