2016-08-01 72 views
0

我的應用程序有5個標籤欄,每次我收到推送通知時,我都希望應用程序導航到索引中的第3個標籤。當應用程序處於前景或背景(處於活動狀態)時,我可以實現它。如果應用程序已關閉,我嘗試打開推送通知,則應用程序將打開並崩潰。 下面是代碼,我有當收到推送通知時,IOS Swift- App不會打開特定選定的標籤欄控制器索引

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) 
{ 
    let tabbar:UITabBarController = self.window?.rootViewController as! UITabBarController 
    tabbar.selectedIndex = 3 
} 

請讓我知道我做錯了。

回答

1

嘗試添加以下代碼diFinishLaunchingWithOptions方法的末尾:

if let notification = launchOptions?[UIApplicationLaunchOptionsRemoteNotificationKey] as? [String : AnyObject] { 
      _ = notification["aps"] as! [String : AnyObject] 

      (window?.rootViewController as! UITabBarController).selectedIndex = 3 
     } 
+0

我收到以下錯誤,當我在diFinishLaunchingWithOptions結尾添加 **使用未聲明的類型「UITabbarController」** – vanquish

+0

對不起,輸入錯誤。它應該是'TabBar'大寫B. –

+0

這是確切的代碼,我仍然有同樣的錯誤 'if let notification = launchOptions?[UIApplicationLaunchOptionsRemoteNotificationKey] as? [String:AnyObject] {= {「aps」] as =! [字符串:AnyObject] (窗口.rootViewController如的UITabBarController?!).setSelectIndex = 3 }' ** AppDelegate.swift:96:42:類型的UITabBarController'沒有成員 'setSelectIndex' 的值** – vanquish

1

你調試代碼?如果應用程序在那裏崩潰,那很可能是window.rootViewController不是UITabBarController。

您可以調試或更改爲!作爲? 人和:

tabbar?.selectedIndex = 3 

如果應用程序不崩潰,你的標籤欄控制器是別的地方。找到它。

還記得檢查選項字典中的通知。

+0

你是正確的關於斷開連接的tabbar控制器。爲了使代碼正常工作,我必須添加延遲。謝謝 – vanquish

+0

非常歡迎 –

+0

@AlessandroRanaldi你是如何做到這一點的,因爲你可能會因爲我的應用程序崩潰而崩潰 –

相關問題