首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更新NSSplitViewController中的第二视图控制器

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

Stack Overflow用户
提问于 2017-03-20 04:55:13
回答 2查看 1.9K关注 0票数 5

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

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

现在,我有了一堆视图控制器(故事板ID,作为行号),应该添加并移除到second viewcontroller中的NSSplitViewController中。

我怎么能这么做?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-20 06:07:43

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

然后您需要创建一个splitViewItem。您可以使用init方法,它接受viewController (NSSplitViewItem(viewController:))。

最后,有两种可能添加新的viewController。要么使用add/removeSplitViewItem方法,要么直接设置splitViewItems数组。

我用密码说:

代码语言:javascript
复制
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
票数 9
EN

Stack Overflow用户

发布于 2019-07-25 16:17:24

第一种方法的目标C表示。

代码语言:javascript
复制
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];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42896102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档