如何将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:如何将信息传递给弹出视图?

Swift - 如何将视图控制器的引用传递给子 UIView 类?

如何使用swift将功能传递给网页?

为啥我在实现委托以将值从子 swift 类传递给父目标 C 类时出错?

如何将变量从 ViewController 类传递给其他结构?

swift如何将图像传递给可点击的tableview单元格?