分割视图控制器(UISplitViewController)仅适用于iPad,可以在一个iPad屏幕中显示2个不同的场景。在横向模式下,屏幕左边的三分之一为主视图控制器的场景,而右边则包含向详细视图控制器场景。在纵向模式下,UISplitViewController隐藏主视图控制器的场景,详细视图控制器管理的场景占住整个屏幕,但可以通过Popover(弹出菜单)访问主视图场景。Popover是在当前视图之上的一个弹出窗口,在分割视图控制器中,一般可以通过详细视图中工具条(toolbar)按钮来访问或触发。在iPad返回横向模式时,主视图场景和详细视图场景重新回到并排显示,且Popover的访问按钮也在场景视图中消失。
这个真的非常有趣!下面的App运行截图可以看到这一点。本教程使用分割视图控制器实现的App功能为:在左侧表视图显示我喜欢的网站列表,在选择其中一个网站时,在右侧详细视图显示该网站页面内容。
iPad iOS 6 模拟器-横向模式:
iPad iOS 6 模拟器 – 纵向模式:
UISplitViewController实质上是一个容器,包含2个子视图控制器,分别为主视图控制器(也称为Root View Controller)和详细视图控制器。详细视图控制器通常作为分割视图控制器的委托,获取iPad方向发生改变的提示,并相应地隐藏或显示Popover按钮。
创建iPad分割视图控制器的项目
本教程的目的是创建一个包含UISplitViewController的iPad项目。主面板将包含一个表视图,展示一些网站地址。在用户从列表中选择一个URL地址时,详细面板将加载相应的网站,并使用UIWebView控件显示页面内容。当旋转iPad到纵向模式时,在详细视图的导航栏中显示Popover按钮,选择该按钮将在Popover菜单中显示主视图列表。
使用Xcode中的Master-Detail Application 模板创建一个iPad项目,项目名称为FavoriateWebSite,类前缀为Fav,设备选择iPad,如下图所示:
通过使用这一模板,可以节省大量编写代码的时间。生成的大量代码是标准的样板代码,在分割视图控制器的实现过程中,几乎不必修改。
具体的操作步骤及技术细节在《一步一步学习iOS 编程》电子版中有详细的介绍。