UIPickerView的简单使用
UIPickerView是一个选择器它可以生成单列的选择器,也可生成多列的选择器,而且开发者完全可以自定义选择项的外观,因此用法非常灵活,使用也比较简单.下面做了一个关于天气预报的小Demo 用 UIPickerView 来实现.
@property (strong, nonatomic) NSDictionary *dataDic;
@property (strong, nonatomic) NSArray *cityArr;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
_grayView.hidden = YES;
// 1.初始化 pickerView
[self loadPickerView];
// 2.加载网络数据
[self loadDataWithRow:0];
}
- (void)loadPickerView
{
// 读取本地plist文件
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"cityCode.plist" ofType:nil];
_dataDic = [[NSDictionary alloc] initWithContentsOfFile:filePath];
// 拿到 key <城市>
_cityArr = [_dataDic allKeys];
}
- (void)loadDataWithRow:(NSInteger)row
{
_grayView.hidden = NO;
// 1.获取当前的城市下标
// NSInteger selectRow = [_pickerView selectedRowInComponent:0];
// 2.通过下标获取城市
NSString *city = _cityArr[row];
// 3.获取当前城市的ID
NSString *cityID = _dataDic[city];
// 4.通过城市ID加载数据
NSString *httpURL = [NSString stringWithFormat:@"data/sk/%@.html", cityID];
[DataService requestsDataWithURL:httpURL withBlock:^(id result) {
[self performSelector:@selector(showGrayView:) withObject:result afterDelay:.2];
}];
}
// 无敌风火轮动画
- (void)showGrayView:(id)result
{
// _grayView.hidden = NO;
// [_activiteView startAnimating];
[self performSelector:@selector(refreshUIWithDic:) withObject:result afterDelay:2];
}
//刷新UI
- (void)refreshUIWithDic:(NSDictionary *)dic {
_grayView.hidden = YES;
//取得weatherinfo的value
NSDictionary *infoDic = dic[@"weatherinfo"];
//取得城市信息
_city.text = infoDic[@"city"];
//取得城市温度
_temperature.text = infoDic[@"temp"];
//取得城市的风向
_wind.text = infoDic[@"WD"];
//取得城市的风级
_windScale.text = infoDic[@"WS"];
//取得城市的湿度
_humidity.text = infoDic[@"SD"];
//取得城市的时间
_time.text = infoDic[@"time"];
}
#pragma mark - UIPickerViewDataSource
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 1; // 多少列
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
return _cityArr.count; // 每一列多少行
}
#pragma mark - UIPickerViewDelegate
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
// 设置没一行显示的数据
return _cityArr[row];
}
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
// 刷新
[self loadDataWithRow:row];
}
数据解析:
#define FIRSTURL @"http://www.weather.com.cn/"
@implementation HCDataService
+ (void)requestsDataWithURL:(NSString *)urlString withBlock:(DataBlock)block
{
// 1.创建URL
NSString *string = [NSString stringWithFormat:@"%@%@", FIRSTURL, urlString];
NSURL *url = [NSURL URLWithString:string];
// 2.创建request
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
// 设置请求方式
[request setHTTPMethod:@"GET"];
// 设置超时时间
request.timeoutInterval = 10;
// 3.创建会话对象session
NSURLSession *session = [NSURLSession sharedSession];
// 4.创建会话任务task,链接服务器
NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (error == nil) {
dispatch_async(dispatch_get_main_queue(), ^{
id result = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
block(result);
});
//取得响应体
// NSString *text = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
// NSLog(@"%@", text);
//取得响应头
// NSHTTPURLResponse *urlResponse = (NSHTTPURLResponse *)response;
// NSDictionary *dic = urlResponse.allHeaderFields;
// NSLog(@"dic:%@",dic);
}
}];
// 开始任务
[task resume];
}
@end
滑动了UIPickView后,数据会即时刷新,显示天气情况。

UIPickerView的简单使用的更多相关文章
- iOS开发--UIDatePicker
UIDatePicker 是一个控制器类,封装了 UIPickerView,但是他是UIControl的子类,专门用于接受日期.时间和持续时长的输入.日期选取器的各列会按照指定的风格进行自动配置,这样 ...
- UIDatePicker 日期/时间选取器(滚轮)—IOS开发
UIDatePicker 是一个控制器类,封装了 UIPickerView,但是他是UIControl的子类,专门用于接受日期.时间和持续时长的输入.日期选取器的各列会按照指定的风格进行自动配置,这样 ...
- IOS开发—UIDatePicker 日期/时间选取器(滚轮)
UIDatePicker 是一个控制器类,封装了 UIPickerView,但是他是UIControl的子类,专门用于接受日期.时间和持续时长的输入.日期选取器的各列会按照指定的风格进行自动配置,这样 ...
- iOS开发——高级UI之OC篇&UIdatePicker&UIPickerView简单使用
UIdatePicker&UIPickerView简单使用 /***************************************************************** ...
- iOS学习之UIPickerView控件的简单使用
UIPickerView控件在给用户选择某些特定的数据时经常使用到,这里演示一个简单的选择数据,显示在UITextField输入框里,把UIPickerView作为输入View,用Toolbar作为选 ...
- UIPickerView简单应用
下面是一些效果图 下面是代码.有些枯燥 , 其实并不难 . #import <UIKit/UIKit.h> @interface ViewController : UIViewContro ...
- UIPickerView 简单操作和实际应用
1.UIPickerView 选择指示器控件 //选择器的初始化 UIPickerView * pickerView = [[UIPickerView alloc] initWithFrame:CGR ...
- iOS边练边学--UIPickerView和UIDatePicker的简单使用
一.点菜系统练习(UIPickerView) <1>UIPickerView的常用代理方法介绍 #pragma mark - <UIPickerViewDelegate> // ...
- iOS:选择器控件UIPickerView的详解和演示
选择器控件UIPickerView: 功能:它能够创建一个类似于密码锁式的单列或多列的选择菜单,用户可以通过它设置的代理来选择需要菜单中的任意的数据.例如创建日历.字体表(类型.大小.颜色).图库等. ...
随机推荐
- 【Machine Learning】训练集 验证集 测试集区别
最近在Udacity上学习Machine learning课程,对于验证集.测试集和训练集的相关概念有些模糊.故整理相关资料如下. 交叉检验(Cross Validation) 在数据分析中,有些算法 ...
- 【Web crawler】simulated DFS web crawler
Finish crawl web learned from udacity 提示:在某些时候,你必须在page上调用get_page.这似乎违反直觉,但是我们用 page 这个词时,指的网页的网址 ( ...
- 二维数组中的查找(C++和Python实现)
(说明:本博客中的题目.题目详细说明及参考代码均摘自 “何海涛<剑指Offer:名企面试官精讲典型编程题>2012年”) 题目 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列 ...
- Word 2010 去除文字或段落背景色
在复制网页文本到Word时,有时会带有网页上的背景颜色.下面采用两种方法解决这种问题,可根据不同需要进行选择. 方法一:清除样式 此种方法适用于只需要网页文字,而不想要网页任何样式信息,如字体大小,段 ...
- HTML,javascript,image等加载,DOM解析,js执行生命周期
- redis复制+Sentinel搭建
1:实验环境 测试环境两台: master:172.16.16.34 slave:172.16.16.35 redis版本:redis3.2 要搭建的环境是,redis简单主从复制 2:安装redis ...
- cocos2d-x 的api
最近,在学习cocos2d-x,发现没有一个很好的api手册.因为起初我们学习一些例子之类的内容,会很容易使用,也很容易明白,但是当我们需要用新的api的时候,第一就会疑问有没有这个api,比如:你使 ...
- 使用ViewPager实现Tab
一.效果演示及分析 我们直接看两幅图.如下: 上两幅图实现的效果就是: (1)手指左右滑动时,中间的布局呈现不同的效果.而且下面的按钮也会做相应的改变. (2)我们 ...
- oracle 日期常用函數sysdate
SYSDATE 2 --◎ 可得到目前系統的時間 3 4 ex. 5 select sysdate from dual; 6 ...
- halcon 数字转字符串实现循环读取图片
1.将字符转换为数字 tuple_number (StringImageIndex,IntImageIndex) 2.将数字转换为字符 tuple_string (IntImageIndex, '0' ...