您的位置:首页 > 产品设计 > UI/UE

iOS中的UIPickerView(选择器)

2016-04-14 00:00 555 查看
UIPickerView 选择器
#import "ViewController.h"

@interface ViewController (){
NSMutableArray *nameArray;
NSMutableArray *ageArray;
UIPickerView *myPickerView;

}

@end

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];

//新建两个数组,存储滚轮里面的信息
nameArray = [[NSMutableArray alloc]initWithObjects:@"小明",@"小强",@"小红",@"小刚",@"小亮", nil];
ageArray = [[NSMutableArray alloc]initWithObjects:@"20", @"25", @"30", @"40", @"30",  nil];

//新建一个滚轮选择器,并设置滚轮的位置和大小
myPickerView = [[UIPickerView alloc]initWithFrame:CGRectMake(0, self.view.frame.size.height-300, self.view.frame.size.width, 300)];

//设置myPickerView的颜色
myPickerView.backgroundColor = [UIColor yellowColor];

//扩展游戏:可以在myPickerView下面切一个圆形出来
myPickerView.layer.cornerRadius = 80;
//让myPickerView可以被切圆角
myPickerView.layer.masksToBounds = YES;

//滚轮自带的两个代理
myPickerView.delegate = self;
myPickerView.dataSource = self;

[self.view addSubview:myPickerView];

//默认显示的第几列(component)第几行(row),每列都需要自己设置(写一行)
[myPickerView selectRow:1 inComponent:0 animated:YES];
[myPickerView selectRow:1 inComponent:1 animated:YES];

}
//UIPickerView的代理方法,注意一定要在.h文件里面引入代理<UIPickerViewDelegate,UIPickerViewDataSource>

//一共有多少列(必须实现)
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
return 2;
}

//每列有多少行(必须实现)
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
if (component == 0) {
return nameArray.count;
}else{
return ageArray.count;
}

}

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

return 100;

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

return 40;
}

//每列滚轮上显示的内容  !!!注意,此方法与- (UIView *)pickerView:方法冲突,只能用一个
- (nullable NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
if (component == 0) {
return [nameArray objectAtIndex:row];
}else{
return [ageArray objectAtIndex:row];
}

}

//个性化字体设置
//- (nullable NSAttributedString *)pickerView:(UIPickerView *)pickerView attributedTitleForRow:(NSInteger)row forComponent:(NSInteger)component{
//
//
//}

//这个方法可以给滚轮添加一个背景色,也可以赋内容  !!!注意,此方法与- (nullable NSString *)pickerView:方法冲突,只能用一个
//添加view到component上
//- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(nullable UIView *)view{
//
//    UILabel *myLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 100, 40)];
//
//    if (component == 0) {
//        myLabel.backgroundColor = [UIColor redColor];
//        myLabel.text = [nameArray objectAtIndex:row];
//        return myLabel;
//    }else{
//        myLabel.backgroundColor = [UIColor blueColor];
//        myLabel.text = [ageArray objectAtIndex:row];
//        return myLabel;
//    }
//
//}

//打印每次选择的内容,可以根据选择了哪个滚轮,分别写分支方法了
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
if (component == 0) {
NSLog(@"%@", [nameArray objectAtIndex:row]);
}else{
NSLog(@"%@", [ageArray objectAtIndex:row]);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: