子ビューコントローラは、子ビューコントローラの実装内で、次のコードによって削除されます。子ビューコントローラが自身を削除したことを親ビューコントローラに通知する方法はありますか?
- (void)commandFinishVC
{
[ self.view removeFromSuperview];
[ self removeFromParentViewController ];
}
子ビューコントローラとそのビューが正常に削除されますが、どのように親がこの通知され? -viewDidDisAppearは呼び出されず、-viewDidUnloadは推奨されなくなりました。
私が見つけることができる例から、親ビューコントローラは削除される子を指定するイベントの発信元であるとみなされますが、(私にとって)子供は完成のために自立していなければなりません。
親ビューコントローラでself.parentViewControllerプロパティを使用し、次のようなものを使用してremoveメソッドを呼び出す必要がありますか?
- (void)commandFinishVC
{
[ childVC.view removeFromSuperview];
[ childVC removeFromParentViewController ];
}
この理由は、VC(View Controller)コンテナを純粋なコンテナとして使用しているため、それに属するビューが存在しないためです。子コンテナ内のビューには、関連するイベントがあります。子VC内のアクション(例えば、完了ボタンを押すこと)は、子VCの解放を決定する。 – Roddy
返信してくれてありがとう、本当に私が読んできたものを明確にするのに役立ちます。 – Roddy
Rob、willMoveToParentViewController:あなたの子ビューコントローラーでそのメソッドをオーバーライドしていない場合は、実際に必要ですか? Appleのドキュメントは、あなたがこれを呼び出すはずのように聞こえるが、あなたの子供の中でそれを上書きしなければ、実際に何かをするかどうかわからない。私はその方法を呼び出さないと何の問題も見ていない。 – rdelmar