実行時にアプリケーションのすべての ViewController を取得するにはどうすればよいですか? 私の知る限りself.navigationcontroller.viewControllers
、ナビゲーションスタックにあるコントローラーのみの NSArray を返します。しかし、アプリケーションのすべての ViewControllers にアクセスできる方法はありますか?
2 に答える
ウムカの答えに引っかかる。
何をしたいのか正確にわからない場合、これは完全にやり過ぎかもしれませんが、役立つかもしれません。
UIViewController (AddToArrayViewController など) をサブクラス化し、カスタム init メソッドで、どこかで定義したシングルトンに追加することができます。そうすれば、ViewController (AddToArrayViewController のサブクラス) を初期化するたびに、Singleton の配列に追加されます。
ただし、ViewControllers を削除/クリーンアップするときに、ViewControllers も削除する必要があります。そうしないと、その配列にダングリング ポインターのリストができてしまい、安全ではありません。
知る限り、自分で気をつけない限り、そのような方法はありません。すべてのナビゲーション コントローラーにアクセスできますが、それらは現在初期化されているコントローラーのみをスタックに保持します。モーダルビューコントローラーなど、どのナビにもないコントローラーが常に存在します。これが必要な場合は、何か間違ったことをしていると思います:)
おそらく、これを行う唯一の方法は、完全に制御している配列にすべてを保持することです。