无法将窗口连接到Storyboard中的IBOutlet

3

我想访问AppDelegate中的窗口。如果我创建一个没有storyboards的新OSX Cocoa项目,那么AppDelegate将包含一个窗口变量,如下所示:

class AppDelegate: NSObject, NSApplicationDelegate {

    @IBOutlet weak var window: NSWindow!

我可以反复删除和重新连接插座和窗口之间的连接,它能正常工作。现在,如果我创建一个新的OSX Cocoa项目,并使用storyboards添加窗口变量到AppDelegate,试图像之前没有storyboards的项目一样控制拖动插座到窗口上,它就不起作用了。有什么建议吗?(OSX 10.11.5 Xcode 7.3.1(和8 beta 6)swift 2.2(和3))我知道我可以在代码中实现它,只是不知道为什么无法连接插座。
1个回答

3
故事板由“场景”组成,每个场景可以看作是单独的xib文件。您不能在不同的xib文件中建立对象之间的连接(操作、插座等),类比地,在故事板中也无法在不同的场景之间建立对象之间的连接。
在默认的故事板设置中,您的AppDelegate对象和窗口对象位于不同的场景中,因此您无法创建插座:

enter image description here

相比之下,在一个 xib 应用中,这两个对象都驻留在同一个 xib 文件中,因此创建连接是可能的。

3
有解决方法吗?我有一个类似的情况,有一个窗口场景和一个窗口内容场景,但是不能跨越这个界限进行连接非常痛苦。 - Uncommon
在我看来,这是一个荒谬的规则。它应该更加灵活,可以将xib上的窗口连接到storyboard上。 - Marin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接