3

実行時にアプリケーションのすべての ViewController を取得するにはどうすればよいですか? 私の知る限りself.navigationcontroller.viewControllers、ナビゲーションスタックにあるコントローラーのみの NSArray を返します。しかし、アプリケーションのすべての ViewControllers にアクセスできる方法はありますか?

4

2 に答える 2

1

ウムカの答えに引っかかる。

何をしたいのか正確にわからない場合、これは完全にやり過ぎかもしれませんが、役立つかもしれません。

UIViewController (AddToArrayViewController など) をサブクラス化し、カスタム init メソッドで、どこかで定義したシングルトンに追加することができます。そうすれば、ViewController (AddToArrayViewController のサブクラス) を初期化するたびに、Singleton の配列に追加されます。

ただし、ViewControllers を削除/クリーンアップするときに、ViewControllers も削除する必要があります。そうしないと、その配列にダングリング ポインターのリストができてしまい、安全ではありません。

于 2013-02-08T07:53:18.737 に答える
1

知る限り、自分で気をつけない限り、そのような方法はありません。すべてのナビゲーション コントローラーにアクセスできますが、それらは現在初期化されているコントローラーのみをスタックに保持します。モーダルビューコントローラーなど、どのナビにもないコントローラーが常に存在します。これが必要な場合は、何か間違ったことをしていると思います:)

おそらく、これを行う唯一の方法は、完全に制御している配列にすべてを保持することです。

于 2013-02-07T17:55:28.033 に答える