OS X:由于缺少入口点,场景无法访问

时间:2015-02-02 00:10:00

标签: ios objective-c xcode macos storyboard

此问题可能与iOS相似, 但OS X 。我已经挣扎了三天,只是尝试使用故事板在NSView内嵌入NSViewControllerNSView

使用.xib或.nib可以正常工作:(当按下下一个按钮时,它会在容器视图中显示customView1或customView2。

nib example

尝试使用故事板它不起作用。事实上,我没有关于如何连接,嵌入,调用,召唤或请求customView1customView2以使自己进入容器视图的概念或线索。

storyboard example

似乎我无法访问它自己的View Controller之外的任何东西!?!

正常工作功能的示例(来自.nib):

example

1 个答案:

答案 0 :(得分:2)

这是一种方法。

您可以将两个“容器视图”对象添加到主视图控制器,作为顶级对象,并将它们连接到控制器中的NSView个出口。这将自动创建两个新的视图控制器场景,Embed从容器视图到子视图控制器进行分段。

Interface Builder

您的视图控制器现在引用了两个内部NSView,您可以根据需要操作它们。

如果您需要对子视图控制器的引用,请为每个Embed segue分配一个故事板标识符并实现-prepareForSegue:sender:

- (void)prepareForSegue:(NSStoryboardSegue*)segue sender:(id)sender
{
    if ([segue.identifier isEqual:@"Embed1"])
    {
        _innerController1 = segue.destinationController;
    }
    else if ([segue.identifier isEqual:@"Embed2"])
    {
        _innerController2 = segue.destinationController;
    }
}

除了segues之外,您还可以为每个内部视图控制器分配一个storyboard标识符,并在故事板中的代码中实例化它们:

_innerController1 = [self.storyboard instantiateControllerWithIdentifier:@"InnerController1"];

您也可以自由地混合使用Storyboards和NIB,因此您可以在单独的NIB中设计内部视图并在代码中实例化它们。