macOS中NSPersistentDocument内IBAction无法触发问题求助
问题描述
我最近开发一个macOS应用时遇到了棘手的问题:我给两个按钮关联了IBAction,但点击按钮时这些动作完全没触发。我已经尝试了各种方法排查,但还是没找到问题所在,肯定是漏了某个配置。另外,我之前做的一个基于NSPersistentDocument的同类应用就没有这个问题。
Document类相关代码
override func windowControllerDidLoadNib(_ windowController: NSWindowController) { super.windowControllerDidLoadNib(windowController) // 用户界面准备代码 guard let context = self.managedObjectContext else { fatalError("context is nil") } mainObjectContext = context let mainWindowController = MainWindowController(nibName: NSNib.Name(rawValue: "MainWindowController"), bundle: nil) customView1.addSubview(mainWindowController.view) setUpLayoutConstraints(item: mainWindowController.view, toItem: customView1) } func setUpLayoutConstraints(item : NSView, toItem: NSView) { item.translatesAutoresizingMaskIntoConstraints = false let sourceListLayoutConstraints = [ NSLayoutConstraint(item: item, attribute: .left, relatedBy: .equal, toItem: toItem, attribute: .left, multiplier: 1, constant: 0), NSLayoutConstraint(item: item, attribute: .right, relatedBy: .equal, toItem: toItem, attribute: .right, multiplier: 1, constant: 0), NSLayoutConstraint(item: item, attribute: .top, relatedBy: .equal, toItem: toItem, attribute: .top, multiplier: 1, constant: 0), NSLayoutConstraint(item: item, attribute: .bottom, relatedBy: .equal, toItem: toItem, attribute: .bottom, multiplier: 1, constant: 0)] NSLayoutConstraint.activate(sourceListLayoutConstraints) }
MainWindowController类相关代码
class MainWindowController: NSViewController { @objc var managedObjectContext: NSManagedObjectContext = mainObjectContext @objc dynamic var customSortDescriptors = [NSSortDescriptor(key: "name", ascending: true, selector: #selector(NSString.localizedStandardCompare(_:)))]; @IBOutlet weak var textFiled: NSTextField! override func viewDidLoad() { super.viewDidLoad() // 视图设置 print("hello") textFiled.stringValue = "hello" } @IBAction func actionAddNew(_ sender: Any) { print("add") textFiled.stringValue = "add" } @IBAction func actionRemove(_ sender: Any) { print("remove") textFiled.stringValue = "remove" } }
内容的提问来源于stack exchange,提问作者thierryH
相关产品推荐
相关产品推荐

