【问题标题】:Master-detail segue from DetailViewController with back button带有后退按钮的 DetailViewController 的主细节 segue
【发布时间】:2015-10-17 10:56:48
【问题描述】:

我正在使用主从模板。我想知道从细节视图到“更多细节”视图并保留后退按钮的最佳方式?

我目前正在使用“显示详细信息(例如替换)”segue。这适用于 iPhone,因为当我点击详细视图中的一个按钮并转到我的“更多详细信息”时,左侧栏按钮中有一个“详细信息”按钮,它会将我带回详细视图。对于 iPad,没有后退按钮。

iPhone(按预期工作):

带有拆分视图的 iPad,缺少“

我想要的行为就像 iPad 上的 Messages 应用程序。主显示对话列表,详细视图显示所选对话,右上角有一个详细信息按钮。点击它会将对话视图替换为“查找我的朋友”视图,并且有一个条形按钮可将您带回对话。

更新:

【问题讨论】:

  • 看起来 iPad 认为它是您的根视图?
  • 在prepareForSegue的DetailViewController中,我正在做moreDetailsViewController *controller = (moreDetailsViewController *)[[segue destinationViewController] topViewController];这是我要去错的地方吗?你是这个意思吗?谢谢。
  • 这可能是问题所在。具有更多拆分视图经验的其他人将能够提供更好的答案,但我认为 iPad 处理这些拆分视图与 iPhone 略有不同。由于两条路径都已经有一个导航控制器,也许可以尝试将加入的 segue 从导航控制器移动到您想要直接呈现的控制器。这有意义吗?
  • 谢谢,我会调查的。我确实尝试删除 detail 和 moreDetail 控制器之间的导航控制器,但似乎没有任何效果。

标签: ios objective-c ipad uisplitviewcontroller master-detail


【解决方案1】:

有两个不同的条形按钮项目,一个是返回按钮和一个“展开”按钮。

如果设备是 iPhone,则返回按钮可用于返回。在 iPad 上,您不需要后退按钮,至少在您显示的屏幕中,带有叠加主视图的详细视图中,因为主表仍然可见,您可以通过单击表轻松更改详细视图的内容。 但也有一个展开按钮,它会隐藏主表并展开详细视图以从一侧扩展到另一侧。

splitViewController!.preferredDisplayMode = UISplitViewControllerDisplayMode.AllVisible

这将显示主要和详细信息

将 .AllVisible 更改为 PrimaryHidden、Automatic 或 PrimaryOverlay 并查看行为。

您可以在 MasterView 上准备按钮以准备 segue。

 controller.navigationItem.leftBarButtonItem = self.splitViewController?.displayModeButtonItem()
 controller.navigationItem.leftItemsSupplementBackButton = true 
 controller.title = "Title of Detailview" // Set title of Detailview Master has own
 controller.navigationItem.backBarButtonItem?.title = "back" // Backbutton Title is set to "back instead of Title of Masterview //

【讨论】:

  • 我的问题是我在屏幕截图中显示的视图不是详细视图,而是另一个子视图,通过点击详细视图中的字段来连接,所以我确实需要返回按钮iPad。如果您查看顶部的故事板,我想从最右边返回到标准主从模板中的详细视图。
  • 嗨,马特,你是如何到达最右边的视图的?使用 prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) 如果是,你如何初始化 viewController? let controller = (segue.destinationViewController as! UINavigationController).topViewController as! DetailViewController?
  • 嗨。我有一个从detailView 链接到moreDetailView 的segue。这是一个“显示详细信息(例如替换)”,因为我只想替换详细信息,将主表保留在视图的左侧。我希望后退按钮撤消此操作,就像适用于 iPhone 一样。如果这有助于解释我的意思,我已经用带注释的故事板更新了我的问题。感谢您的帮助。
  • 在我的detailViewController中,在prepareForSegue中,我做MoreDetailViewController *controller = (MoreDetailViewController *)[[segue destinationViewController] topViewController];
  • 如果您不需要系统按钮(展开),您可以使用它来显示按钮:controller.navigationItem.leftItemsSupplementBackButton = true let cancleButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Cancel, target: self, action: "cancleButton:") controller.navigationItem.leftBarButtonItem? = cancleButton@matt_s
猜你喜欢
  • 2012-08-14
  • 1970-01-01
  • 2012-07-07
  • 2014-01-06
  • 1970-01-01
  • 2017-03-26
  • 1970-01-01
  • 2018-03-07
  • 1970-01-01
相关资源
最近更新 更多