将多个详细视图与拆分视图控制器一起使用
Posted
技术标签:
【中文标题】将多个详细视图与拆分视图控制器一起使用【英文标题】:Using Multiple Detail Views with Split View Controller 【发布时间】:2011-10-02 16:19:12 【问题描述】:如您所知,UISplitViewController
只有一个根控制器和一个细节视图控制器,但我想使用另一个细节视图控制器。
当我从根控制器(弹出控制器)中选择列表项时,选择应该触发不同的详细视图 - 即,行 1 触发详细视图 1,行 2 触发详细视图 2,按钮项触发详细视图 3,等等。 我怎样才能做到这一点?
【问题讨论】:
【参考方案1】:Apple 的那个项目是从 2012 年开始的,没有使用故事板。如果您正在寻找非情节提要的解决方案,它可以正常工作,但在 Xcode 6 中,您应该利用情节提要中新的 Show Detail segue。
Here's a quick example project 展示了如何使用来自主视图控制器的 Show Detail segue 在同一个拆分视图上使用多个详细视图控制器。
【讨论】:
示例项目确实很简单,而且有效。 key 步骤是 A) 第二个 detailViewController 必须嵌入到它自己的UINavigationController
,B) 第二个 segue 被创建从 masterViewController 到新的 UINavigationController
和 C) masterViewController 覆盖 tableView: didSelectRowAt
以使用相关的 segue 标识符调用 performSegue
。【参考方案2】:
Apple 有一个项目可以完全满足您的需求。 MultipleDetailViews
这个示例展示了如何使用 UISplitViewController 来管理 多个细节视图。
应用程序使用带有表格视图的拆分视图控制器 控制器作为根视图控制器。当您在 表视图,一个新的视图控制器被创建并设置为拆分 视图控制器的第二个视图控制器。
根视图控制器定义了一个协议 (SubstitutableDetailViewController) 详细视图控制器必须 采纳。协议指定隐藏和显示栏按钮的方法 控制弹出框的项目。
【讨论】:
非常感谢安德。它帮助了。 @erguvani WTF?巴巴比尤克逊?这是什么意思? 意思是,“你太棒了,伙计!”土耳其语:))【参考方案3】:在斯威夫特中
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
let storyBoard = UIStoryboard(name: "Main", bundle: nil)
let imageGalleryVC = storyBoard.instantiateViewController(withIdentifier: "ImageGallerySID") as! ImageGalleryViewController
splitViewController?.showDetailViewController(imageGalleryVC, sender: nil)
【讨论】:
请注意,您需要确保将标识符(在本例中为ImageGallerySID
)设置为您尝试定位的视图控制器的 Identity Inspector
中的 Storyboard ID
。 【参考方案4】:
我知道这是一个迟到的帖子,因为这是 6 年前提出的,并且去年很活跃。 但是有一种方法可以为拆分视图控制器提供多个详细视图。
通过将每个细节控制器嵌入到它自己的导航控制器中,并使用“显示细节”segue 从主视图链接到每个控制器,您可以通过使用关联标识符然后从主视图在视图之间切换来实现这种结果查看功能“didSelectRowAt”选择一行是您可以选择您希望查看的详细视图。
if indexPath.row == 0
performSegue(withIdentifier: "secondView", sender: self)
if indexPath.row == 1
performSegue(withIdentifier: "thirdView", sender: self)
【讨论】:
以上是关于将多个详细视图与拆分视图控制器一起使用的主要内容,如果未能解决你的问题,请参考以下文章