Appkit:Why shows:could not load the nibName: xxx in bundle (null)

问题描述

我想创建一个简单的 appkit 项目,但我不想使用 storyboard 或 xib。 但是当代码执行到 22 行时,xcode 显示错误 msg.And 我在屏幕上看不到任何东西....

enter image description here


import Cocoa
import SwiftUI

@main
class AppDelegate: NSObject,NSApplicationDelegate {

    var window: NSWindow!


    func applicationDidFinishLaunching(_ aNotification: Notification) {

        window = NSWindow(
            contentRect: NSRect(x: 0,y: 0,width: 480,height: 300),styleMask: [.titled,.closable,.miniaturizable,.resizable,.fullSizeContentView],backing: .buffered,defer: false)
        window.isReleasedWhenClosed = false
        window.center()
        window.setFrameAutosaveName("Main Window")
        window.contentViewController = HomeViewController()
        window.makeKeyAndOrderFront(nil)
    }

    func applicationWillTerminate(_ aNotification: Notification) {
        // Insert code here to tear down your application
    }
}

class HomeViewController: NSViewController {
    
}

解决方法


import Cocoa
import SwiftUI

@main
class AppDelegate: NSObject,NSApplicationDelegate {
    var window: NSWindow!
    func applicationDidFinishLaunching(_ aNotification: Notification) {

        window = NSWindow(
            contentRect: NSRect(x: 0,y: 0,width: 1080,height: 720),styleMask: [.titled,.closable,.miniaturizable,.resizable,.fullSizeContentView],backing: .buffered,defer: false)
        window.isReleasedWhenClosed = false
        window.center()
        window.setFrameAutosaveName("Main Window")
        window.contentViewController = HomeViewController()
        window.makeKeyAndOrderFront(nil)
    }

    func applicationWillTerminate(_ aNotification: Notification) {
        
    }
}

class HomeViewController: NSViewController {
    override func loadView() {
        let v = NSView()
        self.view = v
    }
    override func viewDidLoad() {
        super.viewDidLoad()
        self.view.frame = .init(x: 0,width: 100,height: 100)
    }
}