0

私は約20のビューコントローラーを持っており、モーダルとプッシュのセグエと一緒にチェーンされています。ここで、最後のView Controllerで、ユーザーがアプリを再起動したかのように、最初のViewControllerに再び切り替えたいと思います。残念ながら私がこれを行うとき

[UIViewController *viewController = [self.storyboard instantiateViewControllerWithIdentifier:@"InitViewController"]];
[self presentViewController:viewController animated:YES completion:nil];

以前のViewControllerのすべてがアンロードされているわけではありません。単一のviewDidUnloadメソッドは呼び出されません。これはどのように行うことができますか?

4

2 に答える 2

1

このinstantiateViewControllerメソッドは、ViewControllerの新しいコピーを作成します。iOSは、いわば「戻る」ことを認識していないため、既存のViewControllerはアンロードされません。既存のViewControllerはまだナビゲーション階層にあるため、アンロードできません。あなたが本当にやりたいのは、何らかの方法でストーリーボードを「巻き戻す」ことです。

幸いなことに、iOS 6からは、巻き戻しを通じて、これを行うためのはるかに改善された方法があります。これにより、ストーリーボードを最初に「バックトラック」することができます。これは、やりたいように聞こえます。WWDCビデオにはいくつかの例とウォークスルーがあり、この既存のSOの質問も確認することをお勧めします。

アンワインドセグエとは何ですか?どのように使用しますか?

于 2013-01-29T12:05:05.240 に答える
0

階層内の最初のViewControllerでdismissViewControllerAnimated:completion:を呼び出すことで、簡単に実行できることがわかりました。幸いなことに、私が望んでいたことを達成するために必要なのはそれだけです:-)

于 2013-05-29T10:57:47.070 に答える