1

macOS アプリで、ユーザーがテキストを入力できるシート ポップアップを作成しようとしています。ユーザーがテキストを追加したら、[保存] をクリックしてシートを閉じ、前のページの NSTextView にテキストを追加します。私はこれの多くのバリエーションを試しましたが、正直なところ、2 つの ViewController 間でデータを渡す方法さえわかりません。iOSのみのように見えるPerformSegueを試しました。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 を設定すると、それに到達することはありません。どんな助けでも大歓迎です。私は本当にここで学ぼうとしており、これに対する解決策を見つけるためにできる限りのことをグーグルで検索しました。

最後に、これが完全に間違っていて、より良い方法がある場合はお知らせください。

4

1 に答える 1