在 macOS 应用程序中,我试图弹出一个表单,用户可以在其中输入文本。一旦用户添加了文本,他们点击保存关闭工作表并将文本添加到以前的页面 NSTextView。我已经尝试了很多变体,但老实说,我什至不确定如何在两个 ViewController 之间传递数据。我试过 PerformSegue,它似乎只是 iOS。我也尝试保存到 UserDefaults().string(forKey:"") 但似乎没有任何效果。最后,我遇到了一种方法来引用另一个 ViewController 类,然后从该类运行一个函数,但它似乎不起作用。这是我到目前为止的代码(如果缺少某些内容,我会尝试添加所有相关代码,让我知道)。
这是连接到要添加文本的视图的 ViewContoller。
class NotesViewController: NSViewController {
override func draw(_ dirtyRect: NSRect) {
super.draw(dirtyRect)
}
@IBOutlet var notesTextView: NSTextView!
func updateCaseTemplate(template: Any) {
notesTextView.textStorage?.mutableString.setString(template as! String)
}
这是我试图获取用户文本的 ViewController。
class TemplateViewController: NSViewController {
private var notesView: NotesViewController?
@IBOutlet weak var notesTemplateTextView: NSTextView!
@IBAction func saveNotesTemplate(_ sender: Any) {
var notesTemplate = notesTemplateTextView.textStorage?.mutableString
notesView?.updateCaseTemplate(template: notesTemplate!)
dismissViewController(self)
}
}
我可以在 saveNotesTemplate 中运行 print(notesTemplate!),它显示来自 NSTextView! 的正确文本。如果我在 func updateCaseTemplate() 上放了一个 Break,它永远不会到达它。任何帮助将不胜感激。我真的很想在这里学习,我已经用谷歌搜索了所有我能找到的解决方案。
最后,如果我这样做完全错误并且有更好的方法,请告诉我。