为什么我不能从ViewController访问我的应用程序委托?

时间:2015-05-21 15:36:23

标签: swift cocoa

在我的应用程序中,我想从View Controller访问委托方法,但是当我尝试以这种方式访问​​它时:

let appDelegate = NSApplication.sharedApplication().delegate

我得到nil,是什么原因导致的?

使用附加信息进行编辑:
当我创建应用程序时,我做错了,因为我没有选择使用故事板,但是当我需要它时,我只是添加了一个故事板文件并将其定义为主界面,如下所示:
enter image description here

我相信我的问题可能来自这里,是否可以显示界面但没有正确链接到NSApplication(以及代理人)? 如果是,我该如何解决?

谢谢。

1 个答案:

答案 0 :(得分:1)

在故事板中,确保将App Delegate的自定义类(在 Identity Inspector 中)设置为您的委托类。

enter image description here enter image description here

<强>更新

如果您刚刚创建了新的storyboard,则它将为空。 AFAIK没有创建应用程序场景的“标准”方法。你必须从另一个故事板中复制它(毕竟它们只是XML)。

最简单的方法是创建启用了Use Storyboard的新项目,然后右键点击自动生成的Main.storyboard,选择打开源代码即可。之后,将<!--Application-->部分复制到空Storyboard.storyboard。也不要抓住它的页眉和页脚部分。以下只是一个例子。

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.Storyboard.XIB" version="3.0" toolsVersion="7706" systemVersion="14D136" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" initialViewController="B8D-0N-5wS">
    <dependencies>
        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="7706"/>
    </dependencies>
    <scenes>
    <!--Application-->

    <!-- your copied content -->

    </scenes>
</document>

最后,右键点击Storyboard.storyboard并选择打开为界面生成器 - 故事板,以恢复正常的设计视图。