Cocoa touch 我可以使用UINavigationController作为UISplitViewController的详细视图吗?

Cocoa touch 我可以使用UINavigationController作为UISplitViewController的详细视图吗?,cocoa-touch,ipad,Cocoa Touch,Ipad,我遇到了一个iPad应用程序的问题,我希望在UISplitView中的两个视图中都有UINavigationController。我在这里看过其他类似的问题,但大多数链接到在线教程,并不能完全解决这个问题。下面是一个2分钟的演练,以重新创建我遇到的问题: 从基于拆分视图的应用程序模板开始,在XCode中创建一个新项目 添加以下NSLog语句作为DetailViewController的willHideViewController方法中的第一行: NSLog(@“工具栏:%@”,工具栏) 如果现在

我遇到了一个iPad应用程序的问题,我希望在UISplitView中的两个视图中都有UINavigationController。我在这里看过其他类似的问题,但大多数链接到在线教程,并不能完全解决这个问题。下面是一个2分钟的演练,以重新创建我遇到的问题:

  • 从基于拆分视图的应用程序模板开始,在XCode中创建一个新项目
  • 添加以下NSLog语句作为DetailViewController的willHideViewController方法中的第一行:

    NSLog(@“工具栏:%@”,工具栏)

  • 如果现在运行该应用程序,日志将显示DetailViewController的工具栏处于活动状态。现在

  • 打开MainWindow.xib并展开SplitViewController
  • 从DetailViewController顶部的库中拖动导航控制器
  • 展开新的导航控制器,并将中UIViewController的类更改为DetailViewController
  • Ctrl键从SplitViewController拖动到DetailViewController,并将其指定为代理
  • 保存MainWindow.xib并再次运行该应用程序
  • 此时,详图视图有一个导航栏和一个空工具栏。如果查看日志,应该会发现工具栏为空。为什么会这样?我在Interface Builder中是否缺少某种连接?导航栏的问题是出于某种原因吗

    与上一篇教程不同,我希望保留导航栏和工具栏(纵向时工具栏最好在顶部,横向时不可见),这样当iPad处于纵向时,我仍然有一个功能性的“后退”按钮


    有人对解决这个问题有什么建议吗?使用这种设置的示例项目将是理想的。

    我发现内置的UISplitViewController在尝试将其与大多数其他内置视图控制器子类组合时表现不佳。Matt Gemmell的更灵活,对我来说工作得相当好,尽管有一些奇怪的小故障(尽管这些问题至少在提供源代码时是可以修复的)。

    您当然可以在分割视图控制器的详细视图上使用导航控制器。事实上,iPad设置应用程序使用了这种方法。获得此设置的最佳方法可能是在Xcode 4.x中创建一个新项目,并选择“Master Detail Application”模板。它将生成一个包含两个导航控制器的拆分视图控制器,一个用于左视图,一个用于右视图

    对于你的工具栏问题,为了简单起见,我会在底部放一个工具栏。您仍然可以将工具栏按钮项目放在顶部导航栏上,尽管您只能将它们放在左侧、中间或右侧。如果需要在顶部栏上显示大量项目,一种方法是将工具栏添加到详图视图中,并在详图视图类的ViewWillDisplay事件中隐藏导航栏

    以下是有关如何隐藏导航栏和显示工具栏的示例:

    - (void) viewWillAppear:(BOOL)animated {
        [super viewWillAppear:animated];
        self.navigationController.toolbarHidden = NO;
        self.navigationController.navigationBarHidden = YES;
    }
    

    @嗨,你解决过你的问题吗?我试着做的和你试着做的几乎完全一样。