ios basic:1.2 defining the interaction

在你design interface完之后,你需要让users去和interface去交互,controllers将帮助你实现这种交互。

controllers能够对用户的action做出响应,把views和内容联系起来,用view来显示内容。

controllers是一个view了解到data mode改变的一个管道,view的改变(user action)又通过controllers传给data model,从而实现交互。controller通过和data mode的通信实现了用户的行为。

1 view controllers

在你构建完一个view hierarchy之后,下一步应该让这些visual element和user input 进行交互。你能用visual controllers去管理content view

一个view controller不是view hierarchy中的一部分,也不是interface中的element,但他可以管理views并且实现views的行为。在storyboard上的每一个content view hierarchy都需要一个相应的view controllers 去管理 interface 上的views,去对用户的action做出响应。也就是说,对每一个view hierarchy,你必须写一个UIViewController的subclass。当你的app有多个content view hierarchy时,你需要对不同的view hierarchy去custom view controller.

view controller的功能中最主要的就是对用户的输入进行响应。还有其他一些功能如协调app data mode 和显示这些data的views的关系,manage content views的生命周期,对设备方向的改变做出响应等。除此之外,还可以用view controller 实现在一个content view 和另外一个content view之间的转换。ios设备有着有限的显示空间,view controller的底层架构支持在屏幕上移除一个view controller的所有的views,然后显示另外的一个view controllers的所有的views.

你能用action和outlet在storyboard上的views和view controllers之间进行连接,从而实现views和view controller file之间的通信。

1.1 action

action是与你的app中发生的events联系的一段代码,当事件发生的时候,代码就开始执行。你能用action去掌控部分data去对user interface进行update,在你的app中,action对系统事件和user events的驱动保证了app的运行flow.

用一个方法来定义和实现action,他的返回值是IBAction


sender参数是一个对象,他指向能够触发这个action的对象,IBaction是方法返回值,同void,但他表示出额外的信息:这是一个从interface builder 连接到storyboard的action.

1.2 outlets

outlets提供了一种方式,使的在source code file里面能够引用interface 中的view对象,可以通过在storyboard上 control+拖曳到view controller上来创建outlets。这种方法让你在app run时可以在view controller中用代码对interface 中view对象进行完全的控制


IBoutlet告诉xcode你可以把这个对象的property和interface builder 连接起来,这使得你可以用inspector来直观的设置你的view property


controls:

controls提供了一种让用户可以和source code互动的方式,让代码可以从用户界面接受message.他是一个用户界面的object,比如buttons,slids等,使得用户可以对content掌控,在app可以提供input ,导航等功能。

当你添加一个controls element到interface之后,一个control event就被创建了,control event代表你可以用手势实现控制

通常的控制手势的events有三种:

Touch 和drag events

editing events

value-changed events

在定义interaction时,你要确保user对controls的action引起的purpose已经熟知。

Navigation controllers

如果你的app有多个content view hierarchy ,你需要在各个view hierarchy之间进行切换。一个导航控件可以实现这个功能。

一个Navigator controller 可以通过一系列的view controllers实现向前向后的切换.比如在email中,用户可以Navigator到收件箱,Navigator到已读文件箱等。

一个Navigator controller中可以有多个view controllers,该Naviagtor controller 的navigation stack可以对这些view controller进行管理。

Navigator stack可以放多个view controllers,第一个被放进去的view controller 叫做root view controller ,他永远不会被popped off  the stack,而其他的view controller object可以被从Navigator stack中popped off and push。

一个Navigator stack最主要的工作是管理content view controllers,但在interface 上呈现出你的custom views也是他的工作。添加到Navigator stack中的任何view controller,到会有一个navigation bar,你也可以customize你自己的buttons.

back navigation bar帮助你实现pop off the navigator stack,要实现一个view controller push into the stack,你必须用storyboard去实现他。

2 use storyboard to define Navigation

在这里你将学到用storyboard去define多个scenes的出现顺序

在大部分的app中,storyboard中都由许多有次序的scenes组成,每一个scenes代表了一个view controller 和一个view hierarchy,各个scene通过segues来连接,segues代表两个view controllers之间的切换,


你可以创建的segues的类型:

PUSH:PUSH segue 添加一个view controller到navigation stack,PUSH segues只有当你的source view controller与navigator controller连接后才能用。

Modal:不太理解,以后会做出解释


custom:

你可以通过定义UIStoryboardSegue的子类来custom 切换的segues。

unwind:

unwind segues实现方向相反的导航

不用segues,我们还可以用各个scenes之间的关系来实现导航。

当你用storyboard来设计你的app的interface时,你必需从多个view controllers中选出一个view controller来作为你的initial view controller,选出来的view controller的view content 将会是app第一次运行时所显示的content view,从这个被选出来的controller view你可以切换到其他的controller view.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值