使用拆分视图控制器的多个细节视图

时间:2011-10-02 16:19:13

标签: objective-c ios cocoa-touch uisplitviewcontroller

如您所知,UISplitViewController只有一个根控制器和一个详细视图控制器,但我想使用另一个详细视图控制器。

当我从根控制器(弹出控制器)中选择列表项时,选择应该触发不同的细节视图 - 即,row1触发详细视图1,row2触发详细视图2,按钮项触发详细视图3等。 我怎样才能做到这一点?

4 个答案:

答案 0 :(得分:5)

Apple有一个项目可以准确涵盖您的需求。 MultipleDetailViews

  

此示例显示如何使用UISplitViewController进行管理   多个细节视图。

     

应用程序使用具有表视图的拆分视图控制器   控制器作为根视图控制器。当你做出选择时   在表视图中,创建一个新的视图控制器并将其设置为拆分   查看控制器的第二个视图控制器。

     

根视图控制器定义协议   (SubstitutableDetailViewController)详细视图控制器必须   采用。该协议指定隐藏和显示条形按钮的方法   控制弹出窗口的项目。

答案 1 :(得分:5)

Apple的项目是从2012年开始的,并没有使用故事板。如果您正在寻找一个非故事板解决方案,它可以正常工作,但在Xcode 6中,您应该利用故事板中新的Show Detail segue。

Here's a quick example project显示如何使用主视图控制器中的显示详细信息segue在同一拆分视图上使用多个详细信息视图控制器。

答案 2 :(得分:0)

我知道这是一个很晚的帖子,因为这是6年前问到的,并于去年生效。 但是,有一种方法可以为拆分视图控制器提供多个详细视图。

通过将每个详细信息控制器嵌入到其自己的导航控制器中,并使用“显示详细信息”设置从主视图链接到每个主视图,您可以通过使用关联的标识符然后从主视图来实现在视图之间进行切换的结果视图功能'didSelectRowAt'选择一行是您可以在其中选择希望查看的详细视图的地方。

if indexPath.row == 0 {
    performSegue(withIdentifier: "secondView", sender: self)
}
if indexPath.row == 1 {
        performSegue(withIdentifier: "thirdView", sender: self)
    }

enter image description here

答案 3 :(得分:0)

在Swift中

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)
}