实战问题
macOS SwiftUI小技巧之在没有xib文件的情况下初始化NSViewController的子类
解决方案
NSViewController文档中规定:
如果为nbNameOrNil传递nil,则nibName将返回nil,并且loadView将引发异常;在这种情况下,您必须在调用视图之前调用setView:,或重写loadView。
因此您需要重写一下loadView函数
import Cocoa
class MyViewController: NSViewController {
var textField: NSTextField?
override func loadView() {
self.view = NSView() // any view of your choice
}
override func viewDidLoad() {
super.viewDidLoad()
textField = NSTextField(frame: NSRect(x: 10, y: 10, width: 100, height: 100))
textField!.bezeled = false
textField!.drawsBackground = false
textField!.editable = false
textField!.selectable = false
textField!.stringValue = "TEST"
self.view.addSubview(textField!)
}
}