在我的应用程序中,我想从View Controller访问委托方法,但是当我尝试以这种方式访问它时:
let appDelegate = NSApplication.sharedApplication().delegate
我得到nil
,是什么原因导致的?
使用附加信息进行编辑:
当我创建应用程序时,我做错了,因为我没有选择使用故事板,但是当我需要它时,我只是添加了一个故事板文件并将其定义为主界面,如下所示:
我相信我的问题可能来自这里,是否可以显示界面但没有正确链接到NSApplication(以及代理人)? 如果是,我该如何解决?
谢谢。
答案 0 :(得分:1)
在故事板中,确保将App Delegate
的自定义类(在 Identity Inspector 中)设置为您的委托类。
<强>更新强>
如果您刚刚创建了新的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
并选择打开为➔界面生成器 - 故事板,以恢复正常的设计视图。