更新NSSplitViewController中的第二个视图控制器

unk*_*use 2 macos cocoa swift nssplitviewcontroller

我有NSSplitViewControllerfirst viewcontroller显示一个表,并second viewcontroller应基于表行的选择viewcontrollers清单显示视图-控制.

在此输入图像描述

我正在使用tableViewSelectionDidChange()获取所选行.

现在,我有一堆viewcontrollers的(故事板ID给出的行号),我应该添加和删除,以second viewcontrollerNSSplitViewController

我怎样才能做到这一点?

man*_*ahn 8

你是在正确的道路上.在tableViewSelectionDidChange()你需要使用从您的故事板实例化一个新的viewController NSStoryboard小号instantiateController(withIdentifier: String)方法.然后,您可以将其设置为splitViews第二个视图控制器.

然后你需要创建一个splitViewItem.您可以使用带有viewController的init方法(NSSplitViewItem(viewController:)).

最后,您有两种可能性来添加新的viewController.您可以使用这些add/removeSplitViewItem方法,也可以splitViewItems直接设置数组.

我在代码中的话:

guard let splitViewController = self.parent as? NSSplitViewController,
      let viewController = self.storyboard?.instantiateController(withIdentifier: "yourIdentifier") as? NSViewController
        else { return }

let item = NSSplitViewItem(viewController: viewController)

// Method one
splitViewController.removeSplitViewItem(splitViewController.splitViewItems[1])
splitViewController.addSplitViewItem(item)

// OR method two
var items = splitViewController.splitViewItems
items[1] = item
splitViewController.splitViewItems = items
Run Code Online (Sandbox Code Playgroud)