質問: swiftを勉強中の者です。 あるView(A画面)からモーダルでView(B画面)を表示させ、 そこで行った処理(具体的はUserDefaultsの書き換え)を元のビュー(A画面)に反映させたいと思っています。 A画面のviewDidAppear内に処理を書けば実行されるものと思っていたのですが、 ``` dismissViewControllerAnimated(true, completion: nil) ``` で戻るとviewDidAppearは通らないことがわかりました。 どうしたら元のビューに反映ができるのでしょうか? ご教授頂けると幸いです。
回答: delegateを使って値の受渡しをしてはどうでしょうか。 1) B画面にA画面の型でdelegateのプロパティを用意 2) A画面にUserDefaultsからの読み出しを実行できるメソッドを用意 3) A画面からB画面を呼び出すときにdelegateにself(A画面)をセット 4) B画面でUserDefaultsの書き込み完了後から画面破棄までのどこかのタイミングでdelegate.2)のメソッドを実行 注意点としては、メモリリークを避けるために1)のプロパティはweakで持つことです。