I have a NSSplitViewController
in which first viewcontroller
displays a table and second viewcontroller
should display a viewcontroller from a list of viewcontrollers based on the selection of table row.
I'm using tableViewSelectionDidChange()
to get the selected row.
Now I have a bunch of viewcontrollers(storyboard ID given as row number) that I should add and remove to second viewcontroller
in NSSplitViewController
How can I do that?
You are on the right path.
Within tableViewSelectionDidChange()
you need to instantiate a new viewController from your storyboard using NSStoryboard
s instantiateController(withIdentifier: String)
method. Then you can set this as your splitViews second view controller.
Then you need to create a splitViewItem
. You can use the init method which takes a viewController for this (NSSplitViewItem(viewController:)
).
Finally you have two possibilities to add the new viewController.
Either you use the add/removeSplitViewItem
methods or you set the splitViewItems
array directly.
My words in code:
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With