swift - 更新 NSSplitViewController 中的第二个 View Controller

标签 swift macos cocoa nssplitviewcontroller

我有一个 NSSplitViewController,其中 first viewcontroller 显示一个表,second viewcontroller 应该根据选择表行。

enter image description here

我正在使用 tableViewSelectionDidChange() 获取选定的行。

现在我有一堆 View Controller ( Storyboard ID 作为行号给出)我应该添加和删除到 NSSplitViewController 中的 second viewcontroller

我该怎么做?

最佳答案

您走在正确的道路上。 在 tableViewSelectionDidChange() 中,您需要使用 NSStoryboardinstantiateController(withIdentifier: String) 方法从 Storyboard中实例化一个新的 viewController。然后您可以将其设置为您的 splitViews 第二个 View Controller 。

然后您需要创建一个splitViewItem。您可以使用 init 方法,它为此接受一个 viewController (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

关于swift - 更新 NSSplitViewController 中的第二个 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42896102/

相关文章:

ios - viewController 在我关闭时显示

ios - 如何使用 mvvm swift iOS 处理 View 模型中的错误消息

java - 在 OSX 上安装 Play 框架时出现问题

ios - UICollection查看图像

cocoa - 编辑时防止更新 NSTableView

swift - URLProtocol 没有被初始化

ios - 如何通过 SKScene 播放视频

swift - 本地通知 - 操作未显示警报 - iOS 11

iphone - 如何在符号化崩溃报告(iPhone/Mac)中获取正确的行号?

AppleScript 语法