iPad:在RootView中合并SplitViewController和NavigationController的概念?

时间:2010-04-18 15:53:55

标签: ipad uinavigationcontroller uisplitviewcontroller

我在合并在主视图中使用SplitViewController和控制左窗格弹出/侧边栏表视图的“RootView”控制器这两个概念时遇到了问题。

我想让左边的“RootView”充当导航菜单,但是当RootView通过MainWindow.xib绑定到SplitView的左窗格时我该怎么做?

基本上,我希望左侧导航的工作方式与内置的电子邮件应用程序文件夹下钻导航相同。是否有一个示例iPad项目,它使用SplitView和左/根窗格的NavigationView?

1 个答案:

答案 0 :(得分:4)

创建SplitView项目后,打开RootViewController.m文件并查看-tableViewDidSelectRowAtIndexPath方法。您将看到您单击的项目随后被设置为DetailViewController的属性。

您正在寻找的设计需要您将另一个视图控制器推送到导航堆栈。因此,如果您想象电子邮件应用程序,当用户选择文件夹时,detailView不会更新,但是收件箱的下一级会被压入堆栈。当用户从收件箱中选择一条消息时,详细信息视图将使用消息内容进行更新,并且RootViewController将保持在原来的位置。

在-tableViewDidSelectRowAtIndexPath方法中,声明新的视图控制器

NextViewController *nextView = [[NextViewController alloc] initWithStyle:UITableViewStylePlain];
//This assumes you have another table view controller called NextViewController
//We assign it to the instance variable "nextView"

[self.navigationController pushViewController:nextView animated:YES];
//tells the navigation controller to "slide" the "nextView" instance on top
//if animated:NO it wouldn't slide, it would just "update"

[nextView release];
//release the viewController, it's now retained automatically by the NavigationController

这有意义吗?