提问人:KanKonga 提问时间:9/17/2023 最后编辑:KanKonga 更新时间:9/17/2023 访问量:30
为什么这个 swift 代码不显示文本字段?
Why this swift code does not show up the textfield?
问:
代码应该只在窗口中查看“Hello, World!”。窗口随即出现,但文本未显示。为什么?
我可以看到偶数命令文本字段在前面查看。window.makeKeyAndOrderFront(nil)
错误:没有错误或警告
import Cocoa
@main
class AppDelegate: NSObject, NSApplicationDelegate {
@IBOutlet var window: NSWindow!
func applicationDidFinishLaunching(_ aNotification: Notification) {
// Create a new window
window = NSWindow(contentViewController: TextFieldViewController())
// Make the window visible
window.makeKeyAndOrderFront(nil)
}
func applicationWillTerminate(_ aNotification: Notification) {
// Insert code here to tear down your application
}
func applicationSupportsSecureRestorableState(_ app: NSApplication) -> Bool {
return true
}
}
class TextFieldViewController: NSViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Create a label
let label = NSTextField(labelWithString: "Hello, World!")
label.frame = NSRect(x: 20, y: 100, width: 200, height: 20)
// Add the label to the view
view.addSubview(label)
}
}
答:
1赞
Sweeper
9/17/2023
#1
您应该覆盖 ,并在此处添加标签loadView
override func loadView() {
let view = NSView(frame: NSMakeRect(0,0,400,400))
self.view = view
let label = NSTextField(labelWithString: "Hello, World!")
label.frame = NSRect(x: 20, y: 100, width: 200, height: 20)
view.addSubview(label)
}
这是因为 的默认实现会查找 nib 文件,而您可能没有也不想使用该文件。loadView
NSViewController
的文档说:
但在 macOS 10.10 及更高版本中,该方法会自动查找与视图控制器同名的 nib 文件。
loadView()
另请参阅 loadView
的文档:
例如,如果您有一个名为 MyViewController 的视图控制器子类和同名的 nib 文件,则可以使用方便的初始化模式。
[[MyViewController alloc] init]
评论