使用Xcode Storyboard创建Master-Detail视图,其中Detail视图是Tab Bar到三个不同的视图

时间:2013-08-31 06:21:56

标签: ios xcode storyboard uitabbarcontroller master-detail

我正在尝试实现主细节场景,其中细节场景可以被选项卡以显示三个不同的场景。这个例子是故事列表,对于每个故事,我有兴趣提供介绍,作者信息和评论。所以场景如下:

  1. 主场景:故事列表
  2. 选择故事时:

    1. 详情 - 介绍场景(关于选定的故事)
    2. 详情 - 作者场景(关于作者)
    3. 详细信息 - 评论场景(评论列表)
    4. 我附上了我过去常常实现的故事板: https://docs.google.com/file/d/0B6I7Mlt7gqCBVTFZR2lsX0Q4MUk/edit?usp=sharing

      我还在iPhone模拟器上附加了结果场景,显示了详细信息 - 作者场景: https://docs.google.com/file/d/0B6I7Mlt7gqCBQWhLTlNwWjZ2TG8/edit?pli=1

      我的问题是细节中有2个导航栏 - 作者场景:顶部的一个带有Stories后退按钮,下面一个带有作者标签和B按钮。我希望它们折叠成一个导航栏。这意味着当我点击Stories场景中的故事转换到详细作者视图时,将只有一个导航栏具有Stories后退按钮,作者标签和B按钮。

      我的问题是:如何将这两个导航栏折叠在一起?任何建议都将不胜感激。

2 个答案:

答案 0 :(得分:0)

问题是您有一个根导航控制器,并且在选项卡控制器的每个选项卡中都有一个导航控制器,然后您可以同时显示它们。

您可以尝试以下几点:

  1. 显示选项卡视图时隐藏根导航控制器导航栏。这可以是手动的或通过模态呈现。在任何一种情况下,您都需要一个完成/返回按钮来解雇。模态选项可以在故事板中完成。

  2. 将代理添加到标签栏控制器。从每个选项卡中删除导航控制器。选项卡更改后,获取新视图控制器并将其navigationItem设置到根导航控制器导航栏上。


  3. 只有在有东西可以返回时才会显示后退按钮项目。您可以添加左按钮项目。您可以将它们连接到展开segue,或者您可能需要向每个视图控制器添加一个方法:

    [self.tabBarController.navigationController popViewControllerAnimated:YES];
    

答案 1 :(得分:0)

我想出了一个解决方案:

目标:当将Master-Detail方案与Detail部分组合使用Tab键控制器使用Push segue从Master到标签栏场景扩展到多个场景时,我想:1)。保留push segue的后退按钮,2)。将选项卡栏场景中的导航项设置为可见的任何细节场景,3)。在细节场景上设置右键。另一个目标是使用Storyboard来传达GUI设计和交互流程,而无需进入代码。

问题:使用哪些控制器存在许多问题。 (人们可以使用我上传到这里的Xocde项目来查看它们。)一个很好的解决方案是为每个细节场景使用导航控制器,这样就可以将条形按钮项目添加到细节场景的导航栏上(不要自己添加导航栏到细节场景)。只是从故事板,这工作正常,除了导航场景中的导航栏将显示在标签栏场景的导航栏下,并且上部导航栏上没有正确的标题或正确的按钮。 / p>

解决方案:原帖中描述的所有场景的基本用法都很好。对于编程更改部分,为细节场景创建视图控制器.h和.m。然后在viewDidAppear方法中,检索添加到详细信息场景导航栏右侧的条形按钮,然后将其指定给选项卡栏场景导航栏上的右侧栏按钮项。

代码片段如下 - 这适用于我之前描述的场景:

    UIBarButtonItem *detailButton = self.navigationItem.rightBarButtonItem;
    self.parentViewController.parentViewController.navigationItem.rightBarButtonItem = detailButton;

在Storyboard画布上,选择导航场景,并确保其导航栏已关闭。

我特别喜欢的一件事是,GUI设计和流程的分离完全存在。

希望这会有所帮助。