您的位置:首页 > 产品设计 > UI/UE

【IOS】分隔视图控制器 (UISplitViewController)

2016-02-05 15:19 525 查看
转自:http://www.cnblogs.com/wayne23/p/3596814.html

这种控制器只能用于iPad,它可以在iPad屏幕中显示两个不同的场景:在横向模式下,左边显示一个表,供用户选择;用户选择表中的元素后,详细视图将显示该元素的详细信息。如果iPad被旋转到纵向模式,表将消失,而详细视图将填满整个屏幕;要进行导航,用户可触摸一个工具栏按钮,这将显示一个包含表的弹出框。

默认情况下,UISplitViewController的一端连接到一个受导航控制器(UINavigationController)管理的表视图(UITableViewController),这代表主场景;另一端连接到一个普通视图控制器(UIViewController),这代表详细场景。

可以将主场景和详细场景替换为新的控制器,只需要删除默认的控制器,然后按住Control键,并从分割视图控制器对象拖曳到新的主场景或详细场景,再在Xcode提示时选择Relationship - masterViewController或Relationship - detailViewController。

主场景和详细场景可以通过分割视图控制器互相访问,属性splitViewController包含一个名为viewControllers的数组。通过使用NSArray的方法lastObject,可获取该数组的最后一个元素(详细信息视图)。通过调用方法objectAtIndex,并将索引0传递给它,可获取该数组的第一个元素(主视图)。这样,两个视图控制器就可交换信息了。

主视图控制器可使用如下代码获取详细视图控制器:

UISplitViewController *
splitViewController = (UISplitViewController*) self.window.rootViewController; // 用于获取UISplitViewController
实例

[self.splitViewController.viewControllers lastObject] // splitViewController.viewControllers  是获取UISplitViewController
的 viewControllers 数组,它总是包含两个视图控制器:一个用于左边栏,一个用于右边栏。lastObject 用于获取数组的最后一个对象,即右边栏(详细视图控制器)

注:如果splitviewcontroller
连的是navigationcontroller,还需要通过 [self.splitViewController.viewControllers lastObject].topViewController 来获取详细视图控制器

而详细视图控制器可使用如下代码获取主视图控制器:

[self.splitViewController.viewControllers objectAtIndex:0]

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: