目录:

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入门第五篇——基本数据类型使用

    前面讲到了java和native数据类型,这里就开始做一下使用: 第一步:新建工程 第二部:书写 java方法: public class NativeMethod { static { System ...

  2. Android开发之旅:android架构

    本篇将站在顶级的高度——架构,来看android.我开篇就说了,这个系列适合0基础的人且我也是从0开始按照这个步骤来 学的,谈架构是不是有点螳臂挡车,自不量力呢?我觉得其实不然,如果一开始就对整个an ...

  3. jQuery的AJAX方法简介及与其他文件$符号冲突的解决办法

    一.重要的jQuery AJAX方法简介 $.load(url) 从服务器载入数据 $.get(url,callback) 从服务器请求数据,并执行回调函数 $.post(url,data,callb ...

  4. SQL Server(SSIS package) call .net DLL

    There are two method to call .net DLL in SQLSERVER. The first one is to use the sql clr but it has a ...

  5. 使用JQuery插件,排序Gridview的某个字段

    1. 前台代码 <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server" ...

  6. Linq to sql介绍及增、删、改、查

    LinQ是指集成化查询语言,通过映射将数据库内的表名变为C#的类名,将列名作为属性名,将表的关系作为类的成员对象.O--M--R O-Object对象 R-Relation关系 M-Mapping映射 ...

  7. Raspberry 3安装docker

    SD卡制作 准备一张4GB或者以上的micro sd卡,下载系统镜像,例如raspbian-jessie-lite.img,并使用刷机工具,如Pi filler将其写入sd卡,当然也可以使用命令行的d ...

  8. ASP.NET 导入excel 数据

    1,需要给上传文件的目录给予权限 2. <asp:FileUpload ID="FileUpload1" runat="server" /> < ...

  9. linux操作系统死机处理办法

    这个方法可以在各种情况下安全地重启计算机.大家在键盘上找,可以找到一个叫做“Sys Rq”的键,在台机的键盘上通常与 Prt Sc 共键,在笔记本可能在其他位置,如 Delete.以台机为例,要使用这 ...

  10. BZOJ 3240([Noi2013]矩阵游戏-费马小定理【矩阵推论】-%*s-快速读入)

    3240: [Noi2013]矩阵游戏 Time Limit: 10 Sec   Memory Limit: 256 MB Submit: 123   Solved: 73 [ Submit][ St ...