如你所知,UISplitViewController
只有一个根控制器和一个细节视图控制器,但我想使用另一个细节视图控制器。
当我从根控制器(弹出控制器)中选择列表项时,选择应该触发不同的细节视图 - 即,row1触发详细视图1,row2触发详细视图2,按钮项触发详细视图3等。如何实现此目的?
Apple有一个项目可以完全涵盖您的需求。 MultipleDetailViews
此示例显示如何使用UISplitViewController管理多个详细信息视图。
该应用程序使用具有表视图控制器的拆分视图控制器作为根视图控制器。在表视图中进行选择时,将创建一个新的视图控制器并将其设置为拆分视图控制器的第二个视图控制器。
根视图控制器定义了视图控制器必须采用的协议(SubstitutableDetailViewController)。该协议指定隐藏和显示控制弹出框的条形按钮项的方法。
Apple的这个项目是从2012年开始的,不使用故事板。如果您正在寻找一个非故事板解决方案,它可以正常工作,但在Xcode 6中,您应该利用故事板中的新Show Detail segue。
Here's a quick example project显示如何使用主视图控制器中的显示详细信息segue在同一拆分视图上使用多个详细视图控制器。
我知道这是一个迟到的帖子,因为这是在6年前被问及去年活跃的。但是有一种方法可以为拆分视图控制器提供多个细节视图。
通过将每个细节控制器嵌入到自己的导航控制器中并使用“显示细节”segue从主视图链接到每个细节控制器,您可以通过使用关联的标识符然后从主视图函数实现在视图之间切换的结果didSelectRow在选择行时,您可以选择要查看的详细视图。
if indexPath.row == 0 {
performSegue(withIdentifier: "secondView", sender: self)
}
if indexPath.row == 1 {
performSegue(withIdentifier: "thirdView", sender: self)
}
在斯威夫特
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)
}