我有一个first viewcontroller
,其中second viewcontroller
显示一个表格,tableViewSelectionDidChange()
应该根据表格行的选择从一个viewcontrollers列表中显示一个viewcontroller。
我使用second viewcontroller
来获取所选行。
现在我有一堆viewcontrollers(故事板ID作为行号),我应该添加到NSSplitViewController
中的body {
background-color: black;
margin: 0 0 0 0;
}
#main-nav {
height: 37px;
width: 100%;
overflow: hidden;
background-color: blue;
margin: 0 0 0 0;
}
#main-content {
height: 100px;
width: 100%;
background-color: red;
margin: 0 0 0 0;
}
p {
color: lime;
margin:0
}
我该怎么做?
答案 0 :(得分:6)
你走在正确的道路上。
在tableViewSelectionDidChange()
中,您需要使用NSStoryboard
instantiateController(withIdentifier: String)
方法从故事板中实例化新的viewController。然后,您可以将其设置为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
答案 1 :(得分:0)
第一种方法的客观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];