如何将NSNib.Name传递给Swift / Cocoa中的窗口控制器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将NSNib.Name传递给Swift / Cocoa中的窗口控制器相关的知识,希望对你有一定的参考价值。
在过去一年半的时间里,我正在艰难地将我的旧大脑包裹在Swift / Cocoa发生的事情中。它开始于this problem了解到windowNibName现在是一个结构而不是一个String,@ technerd感谢我在我的MainWindowController类中解决了这个问题:
override var windowNibName: NSNib.Name? {
return NSNib.Name( "MainWindowController" )
}
但那么,如何使用?
我的AppDelegate类中的代码用于工作:
var mainWindowController: MainWindowController?
func applicationDidFinishLaunching(_ aNotification: Notification) {
// Insert code here to initialize your application
// Create a window controller with a XIB file of the same name
let mainWindowController = mainWindowController()
// Put the window of the window controller on screen
mainWindowController.showWindow( self )
// Set the property to point to the window controller
self.mainWindowController = mainWindowController
}
但是后来我从Xcode那里得到了很多有用的解决方案的错误
变量在其自己的初始值内使用;使用'自我'。引用变量
直到我离开:
var mainWindowController: MainWindowController?
func applicationDidFinishLaunching(_ aNotification: Notification) {
// Insert code here to initialize your application
// Create a window controller with a XIB file of the same name
let mainWindowController = self.mainWindowController
// Put the window of the window controller on screen
mainWindowController?.showWindow( self )
// Set the property to point to the window controller
self.mainWindowController = mainWindowController
}
哪个不起作用 - 它编译得很好,但没有窗口显示。这有点意义,因为我猜这个新的mainWindowController不知道传递的是什么。但是尽我所能,我无法让它发挥作用。任何想法都会受到欢迎。
提前谢谢,克雷格
答案
您正在混合使用小写和大写表示法。如果您对类和变量使用相同的名称,请注意如何编写它,区分大小写很重要。
要初始化类,必须使用大写名称。
self.mainWindowController = MainWindowController()
mainWindowController?.showWindow( self )
以上是关于如何将NSNib.Name传递给Swift / Cocoa中的窗口控制器的主要内容,如果未能解决你的问题,请参考以下文章
Swift - 如何将视图控制器的引用传递给子 UIView 类?
为啥我在实现委托以将值从子 swift 类传递给父目标 C 类时出错?