[英]How to disable an NSTextField and make it uneditable? [isEditable property not working]
[英]Uneditable NSTextField in sheet
我在工作表中有一个NSTextField,它是不可编辑的。
此错误在Cocoa中似乎是已知的,请参阅: 运行时无法在工作表中编辑NSTextField
但是我正在寻找纯Swift的解决方案。 我已经试过了:
extension NSWindow {
override var canBecomeKey:Bool {
get {
return true;
}
}
}
但是似乎我们无法覆盖类属性。 然后我尝试在窗口上设置标题,或在工作表主ViewController的viewDidAppear函数上调用makeKey()和成为key(),设置标题和标题可见性也没有帮助...
编辑:这是我用于创建工作表的代码:
@IBAction func addDataSourceAction(_ sender: Any) {
let sheetController = NSStoryboard.init(name: "MyStoryboard", bundle: nil).instantiateController(withIdentifier: "MyPageController") as! NSPageController
presentViewControllerAsSheet(sheetController)
}
假设您使用的是macOS 10.10+,则不需要NSWindow
即可创建工作表。 只需创建一个NSViewController
子类,使用Interface Builder设计相应的视图,然后从单独的视图控制器中呈现工作表:
// MainViewController.swift
@IBAction func showSheet(_ sender: Any) {
let sheetController = SheetViewController() // Assumes there's a SheetViewController.xib file
presentViewControllerAsSheet(sheetController)
}
当您想要摆脱工作表时,只需将其关闭 :
// SheetViewController.swift
@IBAction func endSheet(_ sender: Any) {
guard let _ = presenting else { fatalError("No presenting controller!") }
presenting!.dismissViewController(self)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.