【问题标题】:iPad: Merge concept of SplitViewController and NavigationController in RootView?iPad:在 RootView 中合并 SplitViewController 和 NavigationController 的概念?
【发布时间】:2010-04-18 15:53:55
【问题描述】:

我无法合并在我的主视图中使用 SplitViewController 和使用“RootView”控制器来控制左侧窗格弹出/侧边栏表格视图这两个概念。

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

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

【问题讨论】:

    标签: ipad uinavigationcontroller uisplitviewcontroller


    【解决方案1】:

    创建 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
    

    这有意义吗?

    【讨论】:

    • 非常好的帮助。但只有一个问题。贾斯汀你能帮忙吗?实际上,当我转到下一个视图控制器时,其中还有另一个列表,但是单击该列表不会更新我的详细视图控制器。 DetailView 仅在我从 RootViewController 更新时更新?是吗?我错过了什么??
    • 您必须更新您称为“下一个视图控制器”的 .m 文件中的 -tableView:didSelectRowAtIndexPath: 中的代码。每个单独的视图控制器很可能有自己的 .h 和 .m 文件,并且里面的代码控制在各自的视图控制器中发生的事情
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-08
    • 2018-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多