繁体   English   中英

工作表中不可编辑的NSTextField

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM