2016-11-08 6 views
2

例:私は2つのUIViewControllerを持っています。最初のボタンにはNSTextFieldがあり、2番目のボタンにはNSTextFieldしかありません。macOS、Swift 3:セグの後にデータを取り戻すには?

最初のコントローラのボタンをクリックすると、2番目のコントローラがポップオーバーウィンドウとして表示されます。

最初のコントローラから2番目のコントローラにデータを転送するのは大したことではありません - 私はセグを使用します。しかし、ポップオーバーウィンドウからメインウィンドウにデータを戻すためにはどうすればいいですか? 例:ポップオーバーウィンドウを開き、NSTextFieldにテキストを入力して、ViewControllerNSTextFieldにこのテキストを入力します。あなたはストーリーボードとseguesを使用している場合

私はMacOSので

+1

http://stackoverflow.com/documentation/ios/434/passing-data-between-view-controllers/2520/using-the-delegate-pattern-passing-data-back#t=201611080745298224365(iOSタグ内にあります) – FelixSFD

+0

ビューコントローラがナビゲーションコントローラにある場合、またはプロトコルを使用できる場合は、unwindSegueメソッドを使用できます。 – user3353890

答えて

4

:-(答えを見つけることができない、それは非常に簡単です。

NSViewControllerは、親ビューコントローラへの参照を含むプロパティpresentingを持っています。

参照を取得し、データを渡し、子ビュー・コントローラを閉じ、親ビューコントローラでメソッドを呼び出す。

let firstViewController = presenting as! FirstViewController 
firstViewController.passDataBack(data) 
self.dismiss(self) 
+0

ありがとう!他の男は、「正しい」方法は代議員を使うことだと教えてくれました。そのビデオはわかりやすいです:https://www.youtube.com/watch?v=KhqXUi1SF4s –

+1

YouTubeは質の高いシールを持っていません。誰でもものをアップロードできます;-) – vadian

関連する問題