iOS开发-数据选择UIPickerView

UIPickerView开发一般选择区域或者分级数据的时候会使用到,类似于前端中用到树状结构,不过PC上一般都是从上到下的分级,使用UIPickView是从左到右实现,可以动态的设置UIPickView中中行列数据,将结果显示在文本输入框里,简单的定义一下数据源。通过声明协议捕获事件,展示结果,比较简单,进入正题.

页面布局

页面布局比较简单,一个UIPickerView,一个文本框:

头文件中的声明,实现了UIPickerViewDelegate,UIPickerViewDataSource协议:

@interface ViewController : UIViewController <UIPickerViewDelegate,UIPickerViewDataSource>

@property (weak, nonatomic) IBOutlet UIPickerView *pickView;
@property (weak, nonatomic) IBOutlet UITextField *areaTextField;

@end

 Demo实现

定义存储数据的数组:

@interface ViewController ()
{
   NSArray *areaArr;
   NSMutableArray *teamArr;
}

初始化数据:

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    [email protected][@"西南区",@"中央区",@"东南区",@"大西洋区",@"西北区",@"太平洋区"];
    teamArr=[[NSMutableArray alloc] init];
    [teamArr addObject:@[@"马刺",@"灰熊",@"小牛",@"火箭",@"鹈鹕"]];
    [teamArr addObject:@[@"活塞",@"步行者",@"骑士",@"公牛",@"雄鹿"]];
    [teamArr addObject:@[@"热火",@"魔术",@"老鹰",@"奇才",@"黄蜂"]];
    [teamArr addObject:@[@"凯尔特人",@"76人",@"尼克斯",@"篮网",@"猛龙"]];
    [teamArr addObject:@[@"森林狼",@"掘金",@"爵士",@"开拓者",@"雷霆"]];
    [teamArr addObject:@[@"国王",@"太阳",@"湖人",@"快船",@"勇士"]];
}

设置PickerView的列数:

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
    return 2;
}

返回行数:

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
    //判断列
    if (component==0) {
        return [areaArr count];
    }else{
        //判断0列中当前的行号
        NSInteger  currentRow=[pickerView selectedRowInComponent:0];
        return [teamArr[currentRow] count];
    }
}

 设置每行每列中的数据:

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
    if (component==0) {
        //o列从区域数组中选择
        return areaArr[row];
    }else{
        //根据0列中选择的行号
        NSInteger  currentRow=[pickerView selectedRowInComponent:0];
        return teamArr[currentRow][row];
    }
}

 选择完成之后的事件:

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
    [pickerView reloadComponent:1];
    NSInteger areaRow=[pickerView selectedRowInComponent:0];
    NSInteger teamRow=[pickerView selectedRowInComponent:1];
    [_areaTextField setText:[NSString stringWithFormat:@"%@-%@",areaArr[areaRow],teamArr[areaRow][teamRow]]];

}

 具体效果如下:

时间: 2024-11-07 02:16:13

iOS开发-数据选择UIPickerView的相关文章

iOS开发UI篇—UIPickerView控件简单介绍

iOS开发UI篇—UIPickerView控件简单介绍 一.UIPickerView 控件 1.简单介绍: 2.示例代码 TXViewController.m文件 1 // Created by 鑫 on 14-10-15. 2 3 // Copyright (c) 2014年 梁镋鑫. All rights reserved. 4 5 // 6 7 8 9 #import "TXViewController.h" 10 11 12 13 @interface TXViewContro

iOS开发练习之UIPickerView实现歌词翻滚效果

麻雀虽小,五脏俱全.在平时的项目中,任何一个模块或者功能里其实都隐藏着许多我们平时注意不到的知识点,其实很多东西大家每天都在用,但很多时候都是知其然,而不知其所以然.时间久了,也就懒得去想到底是什么原因了,怎么实现的之类.回想自己的学习路程,也基本都这样混过来,实在愧对光阴,近日抽空,查看过往笔记,顺手写了个小代码练习,感觉温故知新.现分享代码,以供新手入门参考,尤其其中错误的部分也很有广泛性.同时也欢迎各路成精的老鸟们喷吐,能够指正,这样也促进我再进步一点. ViewController.m文

IOS开发数据存储篇—IOS中的几种数据存储方式

IOS开发数据存储篇—IOS中的几种数据存储方式 发表于2016/4/5 21:02:09  421人阅读 分类: 数据存储 在项目开发当中,我们经常会对一些数据进行本地缓存处理.离线缓存的数据一般都保存在APP所在的沙盒之中.一般有以下几种: 1.PList(XML属性列表) 在使用plist进行数据存储和读取,只适用于系统自带的一些常用类型才能用,且必须先获取路径相对麻烦 //写入文件 NSString *doc = [NSSearchPathForDirectoriesInDomains(

iOS开发 数据缓存-数据库

iOS中数据存储方式 Plist(NSArray\NSDictionary) Preference(偏好设置\NSUserDefaults) NSCoding (NSKeyedArchiver\NSkeyedUnarchiver) SQlite3 Core Date Plist.Preference.NSCoding的存储方式 详见 iOS开发 文件存储方式 数据库的存储方式 Core Date:Core Data是iOS5之后才出现的一个框架,它提供了对象-关系映射(ORM)的功能,即能够将O

IOS开发--数据持久化篇之文件存储(一)

前言:个人觉得开发人员最大的悲哀莫过于懂得使用却不明白其中的原理.在代码之前我觉得还是有必要简单阐述下相关的一些知识点. 因为文章或深或浅总有适合的人群.若有朋友发现了其中不正确的观点还望多多指出,不胜感激. 什么叫数据持久化: 在这里我就不照搬教科书上抽象的概念了.我觉得既然要把东西写出来就让它简单明了. 要搞清楚数据持久化,首先要知道数据持久化是相对于缓存而言的,缓存是在程序运行的过程中保存在内存中,程序一旦运行结束,其内存就会被释放.缓存在内存中的数据也就随之消失. 那么数据持久化就是要解

iOS开发——数据持久化OC篇&amp;(五)SQLite3详解

SQLite3详解 SQLite是嵌入式的和轻量级的SQL数据库.SQLite是由C实现的.广泛用于包括浏览器(支持HTML5的大部分浏览器,IE除外).iOS.Android以及一些便携需求的小型web应用系统. 1 使用原因:存储.检索信息 2 SQLite是MySQL精简版.但无需服务器就能进行. 3 两个限制:1)必须手动创建数据库 2)没有面向对象的接口. 4 如何手动创建数据库. 使用SQLite前的准备 使用SQLite是很多做iOS开发中第一次面对C的情况,包括我.因为SQLit

iOS开发-照片选择

本来想做个注册登录的表单的,想想还是先做个简单的头像选择,一般情况下不管是内部管理系统还是面向公众的互联网公司,注册登录是免不了的,用户头像上传是免不了的,尤其是企业用户,上传了自己的图片才感觉自己买的系统是比较值的.iOS开发中上传图片还是比较简单的,通过UIImagePickerController和协议就很容易的实现的图片的选择和上传. 页面布局 首先看下视图,一个按钮,一个标签和一个ImageView: 界面很简单,头文件中声明一下UIImageView: @property (weak

IOS开发-数据持久化(二)【sqlite数据库】

概要 本章主要简示了IOS开发中使用sqlite来持久化数据,其使用方法和C++中使用sqlite基本一致. 结果展示 (其实没啥看的) 流程概要 1.因为使用的是以前的工程,所以主需要再拖拉两个按钮就差不多了 2.因为要使用sqlite,所以需要引用sqlite库(sqlite框架),在工程设置里面的,如下图所示 3.在原先的序列化类里面添加保存和加载数据到数据库的函数,即可,具体见代码. 主要代码 数据库操作代码 -(id)initWithFilePath:(NSString*)file {

iOS开发——数据持久化OC篇&amp;(三)对象归档

归档 iOS开发UI篇—ios应用数据存储方式(归档)  一.简单说明 在使用plist进行数据存储和读取,只适用于系统自带的一些常用类型才能用,且必须先获取路径相对麻烦: 偏好设置(将所有的东西都保存在同一个文件夹下面,且主要用于存储应用的设置信息) 归档:因为前两者都有一个致命的缺陷,只能存储常用的类型.归档可以实现把自定义的对象存放在文件中. 二.代码示例 1.文件结构 2.代码示例 YYViewController.m文件 1 // 2 // YYViewController.m 3 /