文档章节

iOS中的UIPickerView(选择器)

D
 Dumplings
发布于 2016/04/14 17:11
字数 493
阅读 51
收藏 0

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]);
    }
    
}


© 著作权归作者所有

D
粉丝 0
博文 87
码字总数 42098
作品 0
西安
程序员
私信 提问
iOS选择器视图控件(UIPickerView)使用方法总结

iOS中UIPickerView使用总结 UIPickerView是iOS中的原生选择器控件,使用方便,用法简单,效果漂亮。 @property(nonatomic,assign) id<UIPickerViewDataSource> dataSource; @property(nonat......

珲少
2015/06/10
595
0
iOS 8.3 测试版发布:Apple Pay 很快进入中国!

苹果今天发布了 iOS 8.3 第一册测试版,而一周前发布的 iOS 8.2 第五个测试版也正在测试之中。iOS 8.3 的编译号为12F5027d,这次发布的还包括 Xcode 6.3 测试版以及 Swift 1.2。 iOS 8.3 新功...

oschina
2015/02/10
1K
6
疯狂ios讲义之选择器(UIPickerView)

UIPickerView也是一个选择器控件,它比UIDatePicker更加通用,它可以生成单列的选择器,也可生成多列的选择器,而且开发者完全可以自定义选择项的外观,因此用法非常灵活。 UIPickerView直接...

博文视点
2014/01/24
5.7K
1
苹果向开发者发布 iOS 8.3 第二个测试版

苹果今天向开发者发布了 iOS 8.3 第二个测试版,距离 iOS 8.3 第一个测试版相隔两周。iOS 8.3 测试版的发布让人很吃惊,因为支持 WatchKit SDK 的 iOS 8.2 仍然在测试之中。开发者可以通过 ...

oschina
2015/02/24
507
2
苹果向开发者发布第四个 iOS 8.3 测试版

苹果今天向开发者发布了第四个 iOS 8.3 测试版,距离 iOS 8.3 第三个测试版发布相隔两周时间。距离 iOS 8.3 第一个测试版发布相隔一个半月时间。iOS 8.3 beta 4 的编译号为 12F5061,开发者可...

oschina
2015/03/25
686
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周五乱弹 ——不知道假装开心,装的像么

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @巴拉迪维 :天黑了 你很忧愁, 你说世界上, 找不到四块五的妞, 行走在凌晨两点的马路上, 你疲倦地拿着半盒黄鹤楼。#今日歌曲推荐# 《四块...

小小编辑
今天
2.1K
16
64.监控平台介绍 安装zabbix 忘记admin密码

19.1 Linux监控平台介绍 19.2 zabbix监控介绍 19.3/19.4/19.6 安装zabbix 19.5 忘记Admin密码如何做 19.1 Linux监控平台介绍: 常见开源监控软件 ~1.cacti、nagios、zabbix、smokeping、ope...

oschina130111
昨天
69
0
当餐饮遇上大数据,嗯真香!

之前去开了一场会,主题是「餐饮领袖新零售峰会」。认真听完了餐饮前辈和新秀们的分享,觉得获益匪浅,把脑子里的核心纪要整理了一下,今天和大家做一个简单的分享,欢迎感兴趣的小伙伴一起交...

数澜科技
昨天
32
0
DNS-over-HTTPS 的下一代是 DNS ON BLOCKCHAIN

本文作者:PETER LAI ,是 Diode 的区块链工程师。在进入软件开发领域之前,他主要是在做工商管理相关工作。Peter Lai 也是一位活跃的开源贡献者。目前,他正在与 Diode 团队一起开发基于区块...

红薯
昨天
118
0
CC攻击带来的危害我们该如何防御?

随着网络的发展带给我们很多的便利,但是同时也带给我们一些网站安全问题,网络攻击就是常见的网站安全问题。其中作为站长最常见的就是CC攻击,CC攻击是网络攻击方式的一种,是一种比较常见的...

云漫网络Ruan
昨天
31
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部