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. vue2.0路由写法、传参和嵌套

    前置知识请戳这里 vue-routerCDN地址:https://unpkg.com/vue-router@3.0.1/dist/vue-router.js vue-router下载地址:https: ...

  2. Python log 模块介绍

    刚用Python log模块写了一个例子,记录一下. import logging import logging.handlers import os from datetime import dat ...

  3. javascript面向对象的写法02

    面向对象特性的初步实现 1.封装 利用作用域封装变量 作用域的概念是一样的,for语句,if语句等这些作用域内定义的变量只能作用域内访问,函数内定义的变量只能函数内访问. function Class ...

  4. less @import and extend及mixin详解

    在less中,通过 @import (keyword) "filename"的方式引入其他的文件,这个keyword可以是以下6种: referrence referrence这个 ...

  5. 【Leetcode】【Medium】Combination Sum II

    Given a collection of candidate numbers (C) and a target number (T), find all unique combinations in ...

  6. 【Leetcode】【Medium】Divide Two Integers

    Divide two integers without using multiplication, division and mod operator. If it is overflow, retu ...

  7. MYSQL 升序排序但值为0的排最后

    转载 http://blog.csdn.net/looksun/article/details/51445205 如一张表的数据如下: 需要根据gz列的值进行升序排序,但值为0的排在最后面,即最终结果 ...

  8. Master的注册机制和状态改变管理解密

    本课主题 Master 接收 Worker, Driver, Application 注册 Master 处理 Driver 狀态变换 Master 处理 Executor 狀态变换 Master 接 ...

  9. 第四周 day4 python学习笔记

    关于装饰器的更多信息可以参考http://egon09.blog.51cto.com/9161406/1836763 1.装饰器Decorator 装饰器:本质上是函数,(装饰其他函数),就是为其他函 ...

  10. python csv写入数据,消除空行

    import csv rowlist=[{'first_name': 'mark', 'last_name': 'zhao','age':21}, {'first_name': 'tony', 'la ...