0

我正在尝试实现主细节场景,其中细节场景可以通过标签显示三个不同的场景。该示例是一个故事列表,对于每个故事,我都有兴趣介绍介绍、作者信息和评论。所以场景如下:

  1. 主场景:故事列表

选择故事时:

  1. 细节 - 介绍场景(关于所选故事)
  2. 细节 - 作者场景(关于作者)
  3. 详细信息 - 评论场景(评论列表)

我附上了我用来实现这一目标的故事板: https ://docs.google.com/file/d/0B6I7Mlt7gqCBVTFZR2lsX0Q4MUk/edit?usp=sharing

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

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

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

4

2 回答 2

0

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

你可以尝试几件事:

  1. 显示选项卡视图时隐藏根导航控制器导航栏。这可以是手动的,也可以是模态的。在任何一种情况下,您都需要一个完成/返回按钮来关闭。模态选项可以在情节提要中完成。

  2. 将委托添加到选项卡栏控制器。从每个选项卡中删除导航控制器。When the tab changes, get the new view controller and set its navigationItemonto the root nav controllers nav bar.


后退按钮项目仅在有要返回的内容时显示。您可以添加左键项目。您可能能够将它们连接到展开 segue,或者您可能需要向每个视图控制器添加一个方法,该方法执行以下操作:

[self.tabBarController.navigationController popViewControllerAnimated:YES];
于 2013-08-31T07:47:05.287 回答
0

我想出了一个解决方案:

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

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

解决方案:原帖中描述的所有场景的基本使用都可以。对于程序化更改部分,为细节场景创建视图控制器 .h 和 .m。然后在 viewDidAppear 方法中,检索添加到细节场景导航栏右侧的栏按钮,然后将其分配给标签栏场景导航栏上的右侧栏按钮项。

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

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

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

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

希望这可以帮助。

于 2013-09-02T18:23:40.190 回答