我有一个NSSplitViewController,其中first viewcontroller显示一个表,second viewcontroller应该根据表行的选择从一个视图控制器列表中显示一个视图控制器。

我使用tableViewSelectionDidChange()获取选定的行。
现在,我有了一堆视图控制器(故事板ID,作为行号),应该添加并移除到second viewcontroller中的NSSplitViewController中。
我怎么能这么做?
发布于 2017-03-20 06:07:43
你走在正确的道路上。在tableViewSelectionDidChange()中,您需要使用NSStoryboard的instantiateController(withIdentifier: String)方法从故事板实例化一个新的instantiateController(withIdentifier: String)。然后,您可以将其设置为splitViews第二个视图控制器。
然后您需要创建一个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发布于 2019-07-25 16:17:24
第一种方法的目标C表示。
NSStoryboard * mainStoryboard = [NSStoryboard storyboardWithName:@"Main" bundle:nil];
NSViewController * sourceViewController = [mainStoryboard instantiateControllerWithIdentifier:identrifier];
NSSplitViewItem * item = [NSSplitViewItem splitViewItemWithViewController:sourceViewController];
[self removeSplitViewItem:[self.splitViewItems objectAtIndex:1]];
[self addSplitViewItem:item];https://stackoverflow.com/questions/42896102
复制相似问题