gpt4 book ai didi

swift - 工作表中不可编辑的 NSTextField

转载 作者:行者123 更新时间:2023-11-30 12:23:05 26 4
gpt4 key购买 nike

我在工作表中有一个 NSTextField,但它不可编辑。

这个错误似乎在 Cocoa 中已知,请参阅:can't edit NSTextField in sheet at runtime

但我正在寻找纯 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 设计随附的 View ,然后从单独的 View Controller 显示工作表:

// 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)
}

关于swift - 工作表中不可编辑的 NSTextField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44552776/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com