【问题标题】:Can't Connect window to IBOutlet with storyboard无法使用情节提要将窗口连接到 IBOutlet
【发布时间】:2017-01-01 16:18:31
【问题描述】:

我正在尝试访问 AppDelegate 中的窗口。如果我制作一个没有故事板的新 OSX Cocoa 项目,那么 AppDelegate 包含一个像这样的窗口变量

class AppDelegate: NSObject, NSApplicationDelegate {

    @IBOutlet weak var window: NSWindow!

我可以删除插座和窗户之间的连接,然后一遍又一遍地重新连接,它工作正常。

现在,如果我使用情节提要创建一个新的 OSX Cocoa 项目并将窗口变量添加到 AppDelegate 并尝试控制将插座拖到窗口,就像我在没有情节提要的项目上所做的那样,它不起作用。

有什么建议吗?

(OSX 10.11.5 Xcode 7.3.1(和 8 beta 6)swift 2.2(和 3))

我知道我可以在代码中做到这一点,只是不知道为什么我无法连接插座。

【问题讨论】:

    标签: swift xcode macos cocoa storyboard


    【解决方案1】:

    故事板由场景组成,每个场景都可以被认为是一个单一的xib文件。您无法在位于不同 xib 中的对象之间建立联系(动作、出口等),并且 - 类似地 - 您无法在故事板中位于不同场景中的对象之间建立联系。

    在默认情节提要设置中,您的 AppDelegate 对象和窗口对象位于不同的场景中 - 因此您无法创建出口:

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

    【讨论】:

    • 那么有解决办法吗?我在窗口场景和窗口内容场景中遇到了类似的情况,并且无法跨越该边界建立连接是一种痛苦。
    • 在我看来这是一个荒谬的规则,它应该更灵活,将 xib 上的窗口连接到故事板
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-19
    • 1970-01-01
    • 2017-06-14
    相关资源
    最近更新 更多