2014-04-14 40 views
1

我有set InitViewController作爲初始視圖控制器在storyboard。我想用下面的公式來獲取根視圖控制器:iOS 7:獲取準確類型的rootViewController

UIViewController *initViewController = [UIApplication sharedApplication].keyWindow.rootViewController; 

有時initViewController的類型是InitViewController的,有時它是 _UIModalItemAppViewController。我無法弄清楚爲什麼initViewController類型更改爲_UIModalItemAppViewController。我想initViewController總是InitViewController類型。請幫忙。

+0

您是否呈現警報視圖或操作表? – bgfriend0

+0

是的。我在應用程序發佈期間提供了一個警報視圖。同時我想獲得initViewController –

回答

1

由於您在應用程序啓動時顯示警報視圖,警報視圖以模態方式顯示,並且明顯佔據了根位置。在呈現警報視圖之前抓取對根視圖控制器的引用應該可以解決問題。然而,我會注意到,您可能想要考慮在您要呈現的位置顯示警報視圖是否合適(在應用程序代理中聽起來像didFinishLaunching?)

+0

非常感謝您的回答@ bgfriend0 .. !!我只是在alertViewController的viewDidLoad方法中放置了alert視圖並擺脫了問題。 –

+0

很高興幫助。這是最後要考慮的事情。如果您非常想立即顯示此alertView,則可能需要將其從viewDidLoad移至viewDidAppear。 viewDidLoad並不總是最好的地方放置UI的東西,因爲請記住,一個視圖可以加載而不被呈現。在這種特殊情況下,可能不會有太大的實際區別,尤其是在您進行模態演示之後 - 這更多的是設計改進。 – bgfriend0