目录:

1. UIDatePicker

2. UIPickerView

3. UIPickerView多列关联

4. UIWebView

5. Storyboard(故事板)

回到顶部

1. UIDatePicker

1.1 获取用户选择的日期:

NSDate *date = [UIDatePicker date];

1.2 需要设置的属性:

Mode: 时间, 日期, 日期和时间…

Locale: 设置地区,比如中文等

Date: 初始日期,一般为当前日期

     NSDate *selectedDate = [self.datePicke date];

     //将世界标准时间 转换为 本地时间

     //创建时间格式对象

     NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];

     //设置时间格式

     dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";

     //调用stringFromDate方法将当前时间(或用户选择的时间)转换为本地时间

     NSString* str = [dateFormatter stringFromDate:selectedDate];

     self.dateLabel.text = [NSString stringWithFormat:@"%@",str];

回到顶部

2. UIPickerView

2.1 功能:

让用户在列表中选择一条数据

2.2 数据来源:

UIPickerViewDatasource, UIPickerViewDelegate

需要设置数据源和委托,回答问题

多少列(Component), 每列多少行(Row)

每行的内容:

可以是NSString字符串

也可以是NSAttributeString属性字符串

更可以是UIView的视图对象

2.3 选择后的响应方法

 // 有多少列

 -(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{

     return ;

 }

 // 每一列有多少行

 -(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{

     return self.areas.count;

 }

 // 每一行的内容,这个方法是在代理中

 -(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{

     return self.areas[row];

 }

 // 获取选择了哪一个

 -(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{

     self.label.text = self.areas[row];

 }

回到顶部

3. UIPickerView多列关联

3.1 关联的关键是将数据模型关联起来

areas: NSDictionary:  (key :NSString, value:NSArray)

cites: NSArray (keys)

regions : NSArray (valueForKey)

3.2 当选择城市时,调用方法,方法中将regions中的数据换掉,然后刷新界面:

pickerView reloadComponent:

3.2 代码方式选择某一行:

pickerView selectRow:inComponent:animated:

 -(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{

     if (component == ) {

         self.regions = [self.areas valueForKey:self.cities[row]];

         [pickerView reloadComponent:];

         [pickerView selectRow: inComponent: animated:YES];

     }

 }

回到顶部

4. UIWebView

4.1 属性:

Scaling Page to Fit 选中

4.2 加载网页:

NSURL  :   http://www.apple.com.cn

NSURLRequest

webView loadRequest:

 - (IBAction)goWeb:(UITextField *)sender {

     NSURL *url = [NSURL URLWithString:sender.text];

     NSURLRequest *request = [NSURLRequest requestWithURL:url];

     [self.webView loadRequest:request];

 }

回到顶部

5. Storyboard(故事板)

5.1 是什么

是一堆nib文件,放到一个文件中

5.2 干什么

管理所有的界面相关的信息以及界面与界面之间的跳转

5.3 基本概念

自iOS5开始, Xcode5中创建项目默认使用Storyboard

替代nib文件(95%)

Storyboard             xib

Scene(场景)            一个xib文件

initWithCoder:        initWithNibName:bundle:

5.4 好处

减少代码量

直观,清晰

所有的View集中到一起

不需要代码指定rootViewController, 由Storyboard自动完成

5.5 VC-Modal跳转

1)拖拽一个VC(黄球)

2)在旧场景中的按钮上拉线到新场景,创建Segua,选择Modal模式

可以选择建好的Segua, 设置其属性:

Identifier  : 标识符,用于区别多个Segua

Style  :   可选择跳转的模式(Modal或push)

Transition: 选择跳转的动画

3)新界面-VC

如果新界面不需要写代码, 那也就不需要创建新的类与新场景绑定

如果新界面中需要写代码控制,那就需要创建新类:

1)创建一个继承自UIViewController的类

注意不要选择with xib for user interface

2)点击新场景,设置类绑定

3) 其他和以前一样,如设置返回按钮:

4) 界面返回:

千万不要用连线的方式返回

连接一个方法,dismiss…

5.6 VC-push

1) 需要Navigation包含:

选择需要包含的场景

Editor-->Embed In --> Navigation Controller

2)  从旧场景中的按钮上拉线到新场景,创建segua, 选择push模式

相当于从NavigationController中push了一个新场景

5.7 Navigation和Modal一起使用

从一个Navigation跳转到另一个Navigation,应该使用Modal模式

5.8 正向传值

1) 做为跳转连线(创建Segue)

2) 接收参数的VC(Segue的目的地):

1>  拖拽显示控件到界面,增加属性

2>  重写viewWillAppear,根据数据刷新显示

3>  定义公开属性用来接收传入的参数

3)  设置Segue 的标准符:

在Storyboard中找到Segue, 打开检查器4, 设置Identifier属性,起个名字

4)重写 prepareForSegue 方法,进行传值

1>打开源VC代码

2>重写prepareForSegue

3>使用segue.identifier属性区分哪个Segua

4> 使用segue.destinationViewController属性获取目标VC

5> 给目标VC中的属性赋值,达到传参的目的。

5) 如果目标VC被包含在一个Navigation中,则拿到的目标VC是navi,此时需要如下操作才可得到真正的目标VC:

 // 在segue跳转前自动调用此方法,只要segue跳转都会调用此方法,正向传值

 -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{

     if ([segue.identifier isEqualToString:@"GoCViewController"]) {

         NSString *parameter = @"我是参数";

         // 目的地VC

         MXCViewController *destination = segue.destinationViewController;

         destination.data = parameter;//传参

     }

     if ([segue.identifier isEqualToString:@"GoNaviViewController"]) {

         NSString *parameter = @"";

         UINavigationController *navi = segue.destinationViewController;

         MXBViewController *destination = (MXBViewController *)navi.topViewController;

         destination.data = parameter;

     }

 }

5.9  Navigation配置

1) title

直接点击场景上的NavigationBar, 编辑

2) navigation item (左右按钮)

一个按钮直接拖拽

多个按钮:

只能用代码,跟以前一样

3)toolbar

1>设置显示

选择NavigationController

检查器4  选中 Show ToolBar

2>给被包含的VC加按钮

拖拽

3>不同的VC可以配置不同的Toolbar

如果没有配置VC的toolbar时,不希望push时显示出来:

选中VC,检查器4:  Hide Bottom Bar On Push

4)自定义头视图

直接拖拽一些控件到NavigationBar上使用

或者拖拽一个UIView做为头视图,UIView中可以随便布局子视图

以前的xib方式下,用代码写:

self.navigationItem.titleView = …..;

self.navigationItem.leftBarButtonItem  = [[UIBarButtonItem alloc]initWithCustomView:UIView];

5.10 TabBarController

1)第一方式

拖拽一个Tabbar黄球

删除不需要的子场景

接线从TabBarController到你要的场景中,注意要选择view controllers

2) 第二方式

选择需要包含的VC

Editor-->Embed In --> Tab Bar Controller

3) 配置

title, image

点击具体的VC下的TabBar, 修改Title, 检查器4中选择image

5.11 和旧的xib代码兼容

在Storyboard中跳转到xib文件:

连线IBAction, 调用方法,方法中和以前一样:

创建VC对象(initWithNibName:bundle:), 然后present或push

在Storyboard中不使用Segue来进行代码跳转到其他场景:

在要跳转的那个VC中设置一个属性storyboard ID(第三个检查器),然后使用present进行跳转

   UIViewController *viewController = [self.storyboard instantiateViewControllerWithIdentifier:@"MyScene"];

    [self presentViewController:viewController animated:YES completion:nil];

补充:

arc4random() % 5  随机产生0~4其中一个

10-UIKit(UIDatePicker、UIPickerView、UIWebView、Storyboard)的更多相关文章

  1. MyEclipse 10.7(版本:eclipse 3.7.x-Indigo系列)安装activiti-eclipse-plugin插件(流程设计器)

    基本信息 1.本机MyEclipse 10.7菜单[Help->About MyEclipse Enterprise Workbench]的版本信息: MyEclipse Enterprise ...

  2. 2015.10.11(js判断鼠标进入容器的方向)

    判断鼠标进入容器的方向 1.前几天在万圣节专题项目中用到了鼠标坐标page事件,随着鼠标背景图片移动形成有层次感的效果,但page事件在IE低版本不支持,所以还要做兼容.在研究page事件同时无意中想 ...

  3. MyEclipse 10.7(版本:eclipse 3.7.x-Indigo系列)安装PyDev 4.5.4插件

    解压安装路径结构如截图所示: 安装后重启:

  4. 神舟K650c i7(W350STQ)上成功装好Mac OS X 10.9,兼谈如何安装WinXP、7、8.1、OSX、Ubuntu五系统(Chameleon、MBR)

    作者:zyl910 参考教程——http://bbs.pcbeta.com/viewthread-1432534-1-4.html笔记本SNB和IVY平台Win7/Win8/Win8.1安装OS X ...

  5. WCF分布式开发步步为赢(10):请求应答(Request-Reply)、单向操作(One-Way)、回调操作(Call Back).

    WCF除了支持经典的请求应答(Request-Reply)模式外,还提供了什么操作调用模式,他们有什么不同以及我们如何在开发中使用这些操作调用模式.今天本节文章里会详细介绍.WCF分布式开发步步为赢( ...

  6. 【Java】 大话数据结构(10) 查找算法(1)(顺序、二分、插值、斐波那契查找)

    本文根据<大话数据结构>一书,实现了Java版的顺序查找.折半查找.插值查找.斐波那契查找. 注:为与书一致,记录均从下标为1开始. 顺序表查找 顺序查找  顺序查找(Sequential ...

  7. PHP7 学习笔记(一)Ubuntu 16.04 编译安装Nginx-1.10.3、 PHP7.0.9、Redis3.0 扩展、Phalcon3.1 扩展、Swoole1.9.8 扩展、ssh2扩展(全程编译安装)

    ==================== PHP 7.0 编译安装================== wget http://cn2.php.net/get/php-7.0.9.tar.bz2/fr ...

  8. 【Linux命令】文本文件编辑命令10个(cat、more、less、head、tail、tr、wc、stat、cut、diff)

    目录 cat查看文档 more可分页查看文档 less相比较more功能更强大 head查看文档的前N行 tail查看文档的后N行或试试刷新查看 tr替换文本字符 wc统计文本行数 stat查看文档存 ...

  9. spark 1.6.0 安装与配置(spark1.6.0、Ubuntu14.04、hadoop2.6.0、scala2.10.6、jdk1.7)

    前几天刚着实研究spark,spark安装与配置是入门的关键,本人也是根据网上各位大神的教程,尝试配置,发现版本对应最为关键.现将自己的安装与配置过程介绍如下,如有兴趣的同学可以尝试安装.所谓工欲善其 ...

随机推荐

  1. Android JNI开发提高篇

    有关JNI的开发技术,我们继续围绕Android平台进行,JNI可以支持C或C++,从目前为止我们写过的JNI代码均为C实现的,即文件名为.C而C++的和这些有什么不同呢? Android平台上的JN ...

  2. 详细解说Android权限在安卓开发中

    android.permission.ACCESS_CHECKIN_PROPERTIES //允许读写访问”properties”表在checkin数据库中,改值可以修改上传 android.perm ...

  3. 【在网页中获取截图数据】Chrome和Firefox下的实战经验

    [转载自我在segmentfault的专栏:https://segmentfault.com/a/1190000004584071] 最近在实现一个功能,需求如下: 前提:当前页面无弹窗 页面任意位置 ...

  4. 在GridView控件里面绑定DropDownList控件

    参考链接: http://www.aspsnippets.com/Articles/Populate-DropDownList-with-Selected-Value-in-EditItemTempl ...

  5. js中设置setInterval的注意点

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  6. Css静态进度条

    图片预览: Css代码: <style> .statusList{width:240px; float:left; line-height:68px;margin:0 2px; text- ...

  7. 顺为资本CEO许达来:为什么说中国创业者很幸福?(附PPT)

    顺为资本创始合伙人许达来 编者按:许达来,顺为资本创始合伙人及CEO,代表性投资项目包括小米科技.丁香园.一起作业.加一联创.金山软件及兴达国际等. 本文为许达来在新浪创业举办的新创课活动上的内容分享 ...

  8. Python web框架有哪些

    简单易学的web.py, 大型的django:文档最完善.市场占有率最高.招聘职位最多. Tornado 具体看:http://feilong.me/2011/01/talk-about-python ...

  9. 啊上班的二号i将诶

    http://www.huihui.cn/share/8112372 http://www.huihui.cn/share/8112363 http://www.huihui.cn/share/811 ...

  10. Gartner 认可 Microsoft 为应用程序平台即服务的领导者

    对于 Windows Azure 而言,2013 年是了不起的一年.客户使用量每月都创新高:4 月份 Windows Azure 基础结构服务一经正式发布即受到前所未有的青睐,成为重要的里程碑.Gar ...