gpt4 book ai didi

xcode - windowDidLoad() 从未调用过使用 mac 的 Storyboard

转载 作者:搜寻专家 更新时间:2023-10-31 22:17:11 24 4
gpt4 key购买 nike

我刚刚试用了 Xcode 6 中包含的新 mac Storyboard功能。我使用 Storyboard和 swift 设置了一个新的 OS X 项目,然后我创建了一个新文件 MainWindowController.txt。 swift,创建了初始化程序 init(coder: NSCoder!)(否则编译器会警告我)并将所有内容挂接到 Main.storyboard 文件(设置MainWindowController - 检查器中 WindowController 的类)。

一切编译正常,带有指定窗口内容- View 的窗口打开。但是我在 windowDidLoad 函数中编写的代码永远不会被调用。让它像这样:

override func windowDidLoad() {
super.windowDidLoad()

println("Executed")
}

我还测试了我的初始化程序是否被调用 - 它是。

有人知道吗?我以前从未在 iOS 上大量使用 Storyboard,也许我错过了一些实质性的东西。

最佳答案

在 Yosemite 中,NSViewController 得到了提升,具有强大的新功能,可以与 Storyboards 一起使用。同时,NSWindowController 被降级。使用 Storyboard ,窗口不再从 Nib 加载,因此 windowDidLoad() 不再被调用。

窗口本身变得不那么重要是有道理的,有利于它实际包含的更强大的 View 。我在此页面上的其他答案显示了如何设置 AppDelegate 以自定义窗口外观。还有更多细节on another page here ,关于使用 AppDelegate 来实现您之前可能在 NSWindowController 中完成的一些事情。

但是,如果您只想捕获 windowDidLoad() 作为自定义窗口外观选项的方法,那么在 Interface Builder 中非常容易做到这一点,只需将它们作为用户定义的运行时属性添加到 NSWindow 对象即可。您根本不需要继承 NSWindowController 或编写任何代码。只需通过 Identity Inspector Pane 将这些值插入 NSWindow 对象即可实现 AppDelegate 示例代码中显示的相同效果:

Keypath: titlebarAppearsTransparent, Type: Boolean, Value: Checked
Keypath: titleVisibility, Type: Number, Value: 1
Keypath: styleMask, Type: Number, Value: 32783

查看标题以确定常量的实际数值。

(例如:NSWindowTitleVisibility.Hidden = 1)

当然,您不能指定 styleMask 的各个位,但可以很容易地将它们全部加在一起并获得一个数字来指定样式。

关于xcode - windowDidLoad() 从未调用过使用 mac 的 Storyboard,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24097560/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com