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的简单使用的更多相关文章

  1. iOS开发--UIDatePicker

    UIDatePicker 是一个控制器类,封装了 UIPickerView,但是他是UIControl的子类,专门用于接受日期.时间和持续时长的输入.日期选取器的各列会按照指定的风格进行自动配置,这样 ...

  2. UIDatePicker 日期/时间选取器(滚轮)—IOS开发

    UIDatePicker 是一个控制器类,封装了 UIPickerView,但是他是UIControl的子类,专门用于接受日期.时间和持续时长的输入.日期选取器的各列会按照指定的风格进行自动配置,这样 ...

  3. IOS开发—UIDatePicker 日期/时间选取器(滚轮)

    UIDatePicker 是一个控制器类,封装了 UIPickerView,但是他是UIControl的子类,专门用于接受日期.时间和持续时长的输入.日期选取器的各列会按照指定的风格进行自动配置,这样 ...

  4. iOS开发——高级UI之OC篇&UIdatePicker&UIPickerView简单使用

    UIdatePicker&UIPickerView简单使用 /***************************************************************** ...

  5. iOS学习之UIPickerView控件的简单使用

    UIPickerView控件在给用户选择某些特定的数据时经常使用到,这里演示一个简单的选择数据,显示在UITextField输入框里,把UIPickerView作为输入View,用Toolbar作为选 ...

  6. UIPickerView简单应用

    下面是一些效果图 下面是代码.有些枯燥 , 其实并不难 . #import <UIKit/UIKit.h> @interface ViewController : UIViewContro ...

  7. UIPickerView 简单操作和实际应用

    1.UIPickerView 选择指示器控件 //选择器的初始化 UIPickerView * pickerView = [[UIPickerView alloc] initWithFrame:CGR ...

  8. iOS边练边学--UIPickerView和UIDatePicker的简单使用

    一.点菜系统练习(UIPickerView) <1>UIPickerView的常用代理方法介绍 #pragma mark - <UIPickerViewDelegate> // ...

  9. iOS:选择器控件UIPickerView的详解和演示

    选择器控件UIPickerView: 功能:它能够创建一个类似于密码锁式的单列或多列的选择菜单,用户可以通过它设置的代理来选择需要菜单中的任意的数据.例如创建日历.字体表(类型.大小.颜色).图库等. ...

随机推荐

  1. Android PopupWindow显示位置设置

    当点击某个按钮并弹出PopupWindow时,PopupWindow左下角默认与按钮对齐,但是如果PopupWindow是下图的那样,会发 生错位的情况,尤其是不同尺寸的平板上,那错位错的不是一般的不 ...

  2. IEEP部署企业级网络工程-网络故障-环路故障

    网络故障 1.环路故障 概念 1).以太网是一个支持广播的网络, 在没有环路的环境中,广播报文在网络中以泛洪的形式被送达到网络的第一个角落,以保证每个设备都能够接受到它.每台二层设备在接收到广播报文以 ...

  3. Java文件操作工具类

    import com.foriseland.fjf.lang.DateUtil;import org.apache.commons.io.FileUtils;import org.slf4j.Logg ...

  4. Linux 系统查看tomcat控制台命令

    前提进入tomcat/logs文件夹下 查看全部命令是:tail -f catalina.out 如果想查看具体文件的日志进入该文件所在目录然后命令如下: tail -f filename

  5. 【JAVA EE企业级开发四步走完全攻略】

    本文是J2EE企业级开发四步走完全攻略索引,因内容比较广泛,涉及整个JAVA EE开发相关知识,这是一个长期的计划,单个发blog比较零散,所以整理此索引,决定以后每发一季JAVA EE blog后会 ...

  6. codeforces793 B. Igor and his way to work (dfs)

    题目链接:codeforces793 B. Igor and his way to work (dfs) 求从起点到终点转方向不超过两次是否有解,,好水啊,感觉自己代码好搓.. #include< ...

  7. bzoj2331 [SCOI2011]地板

    Description lxhgww的小名叫“小L”,这是因为他总是很喜欢L型的东西.小L家的客厅是一个的矩形,现在他想用L型的地板来铺满整个客厅,客厅里有些位置有柱子,不能铺地板.现在小L想知道,用 ...

  8. PHP-------文件上传的实例

    文件上传的实例 一.上传头像 在注册时,要求用户上传头像,登陆主页面,显示用户信息时,头像也要显示出来. 例子: 注册页面: 图片存数据库时是text类型. <title>无标题文档< ...

  9. table中实现数据上移下移效果

    html 由于vue+Element项目中的table,没有开放的上移下移的api,但是能对数据操作,故思路为数组中的一条数据,再重新添加一条数据,办法有点笨,但是好歹也是实现了,望有好的办法的,请留 ...

  10. js 实现 文字打印效果

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...