2013-02-07 42 views
3

如何在運行時獲取應用程序的所有ViewController?據我所知,self.navigationcontroller.viewControllers只返回導航堆棧上那些控制器的NSArray。但有什麼方法可以訪問我的應用程序的所有ViewControllers?如何在iOS中獲取所有應用程序的ViewControllers?

+1

你的目標是什麼?您可以獲取當前添加的所有視圖控制器。你是否也在尋找你的應用程序使用但尚未顯示的視圖控制器? – rmaddy

+0

你可以使用一些數組來添加所有的viewcontrollers或者只有可能的方式像UINavigationController或UITabBarController – nsgulliver

回答

1

掛鉤在Umka的答案。

不知道你想要做什麼,這可能是完全矯枉過正,但它可能會幫助你。

你可以繼承UIViewController(例如AddToArrayViewController),並在自定義init方法中將它添加到你已經定義的某個單例中。這樣,每當你初始化一個ViewController(它是你的AddToArrayViewController的子類)時,它將被添加到你的Singleton中的一個數組中。

但是,您需要確保在移除/清理時還要移除ViewControllers,否則您只會在該數組中有一個懸掛指針列表,這並不安全。

1

AFAIK有沒有這樣的方式,除非你照顧你的自我。您可以訪問所有導航控制器,但它們只能將當前初始化的控制器保存在堆棧中。總有一些控制器可能不在任何導航中,例如模態視圖控制器。如果你需要的話,我會說你做錯了什麼:)

也許唯一的方法就是把它們全部放在你完全控制的陣列中。

相關問題