2013-04-18 79 views
0

好的,所以我一直在尋找解答以下問題的方法:當推送通知從AppDelegate到達時,如何將某個視圖控制器推入視圖?當rootViewController不是UINavigationController時推送視圖

而大多數答案是,如果rootViewController是一個UINavigationController,我必須通過我的StoryBoard實例化一個視圖,並用該根控制器推送它。

這是我的情況。這是我的故事板是如何組織的:

enter image description here

所以你看我的RootViewController的沒有UINavigationController的。那麼,我怎樣才能從故事板中推出某種觀點呢?

注意:爲推送通知呈現一些單獨的模式視圖並不是一個好主意。這是我的最後一招。

我想要一個在Apple Mail和Message應用程序中的解決方案。

+0

你可以添加在導航控制器中嵌入你的rootViewController並保持navigationBar隱藏? – Anupdas

+0

這是一個開始,但是我如何從StoryBoard推出另一個視圖?或者只能創建並顯示新的? –

+0

你想從哪個控制器顯示(推送)這個新的視圖控制器(當通知進入時,是否希望能夠從屏幕上的任何控制器中推送它)?這個新控制器的目的是什麼?根據它的用途,模式演示可能更合適。 – rdelmar

回答

0

好吧,我想我不會輕易放棄:)這是我發現我的問題的解決方案。由於我在模態視圖控制器中呈現我的主要應用程序視圖,因此我做了以下操作:

由於iOS 5的每個視圖控制器都有一個presentedViewController屬性。一旦你知道這一點,從那裏很容易。 下面是一些具體的代碼裏面AppDelegate.m

- (void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { 
    if ([[userInfo objectForKey:@"notificationType"] isEqualToString: @"messageType"]) { 

    UITabBarController * tabBarController = (UITabBarController *)[self.window.rootViewController presentedViewController]; 
[tabBarController setSelectedIndex:kChatViewIndex]; 
// My view controller that I presented modally is a tabBar, your case can be different. 

// ... so from here I can reach any navigation controller or any other view from inside my app 

} 

現在,因爲你有你的視圖控制器,你可以使用的setSelectedIndex:如果它是一個tabBarController,或按某個視圖控制器如果它是一個導航裝置。

希望這可以幫助任何有類似問題的人。 乾杯!

相關問題