2017-02-27 13 views
1

タブが少ないTabBarControllerがあります。 各タブには、TableControllerとセルを持つViewControllerを持つNavigationControllerがあります。ユーザーがセルを押すと、彼はDetailedViewControllerを取得します。TabBarControllerでViewControllerを開いてプッシュ通知を処理する

私が取得したいのは、私のアプリがプッシュ通知を受け取ったときに、DetailedViewControllerを開くことです。

私は( あなたは私がDetailedViewControllerに渡したいのItemIDを持っていることを確認)

OneSignal.initWithLaunchOptions(
      launchOptions, 
      appId: API_KEY, 
      handleNotificationAction : { 
       (result) in 
        if additionalData!["itemID"] != nil { 
         let itemID = Int(additionalData!["itemID"] as! String) 
         if(itemID! > 0) { 

         if(self.window?.rootViewController?.presentedViewController != nil) { 
          self.window?.rootViewController?.presentedViewController?.dismiss(animated: true, completion: { 
           let storyboard = UIStoryboard(name: "Main", bundle: nil) 
           let tabBarController = storyboard.instantiateViewController(withIdentifier: "MainTabBarController") as! UITabBarController 
           tabBarController.selectedIndex = 1 
           self.window?.rootViewController?.present(tabBarController, animated: true, completion: nil) 
          }) 
         } 

        } 
       } 
       } 
     } 
    ) 
  1. このコードは、何らかの理由で動作していないようOneSignalとAppDelegateの私のdidFinishLaunchingWithOptionsが見えます使用

    - I必要に応じない ViewControllerが必要なタブ

  2. TabBarControllerからDetailedViewControllerを開く方法がわかりません
  3. 私はいつもllyはDetailedViewControllerを取得します - 私はそれに戻るボタンを押すとどうなりますか?私はその場合ナビゲートする項目のリストを持つViewControllerはありませんでしたか?
  4. メモリをうまく使用するコードですか?
+0

「rootViewController」を却下する理由はありますか?単にあなたの望むタブコントローラを表示してみませんか?そうすれば、少なくともあなたの後ろボタンが機能します(一度他のものが機能すれば) –

+0

アプリケーションが実行中で通知を受け取るので、提示されたViewControllerを却下しないとどうなりますか?それは新しいものを開き、より多くの記憶を食べるでしょう - 間違っていますか? – moonvader

+0

rootViewControllerを目的のView Controllerに変更するだけです。 – Mannopson

答えて

1

はこれを試してみてください。最後に

self.window?.tintColor = UIColor.init(red: 0.0, green: 0.5, blue: 0.0, alpha: 1.0) 

を:まず、あなたはまた、右ここにグローバルtintColorをカスタマイズすることができ、あなたのTabBarController

let tabBarController = storyboard.instantiateViewController(withIdentifier: "MainTabBarController") as! UITabBarController 

をインスタンス化し、あなたのrootViewController

self.window = UIWindow.init(frame: UIScreen.main.bounds) 
    self.window?.rootViewController = tabBarController 
    self.window?.makeKeyAndVisible() 

を変更します選択したインデックスを設定してください:

tabBarController.selectedIndex = 1 

それはうまくいくはずです。それが動作するかどうか私に教えてください!

let storyboard = UIStoryboard.init(name: "Main", bundle: nil) 
    let tabBarController = storyboard.instantiateViewController(withIdentifier: "MainTabBarController") as! UITabBarController 
    tabBarController.selectedIndex = 1 

    self.window = UIWindow.init(frame: UIScreen.main.bounds) 
    self.window?.tintColor = UIColor.init(red: 0.0, green: 0.5, blue: 0.0, alpha: 1.0) 
    self.window?.rootViewController = tabBarController 
    self.window?.makeKeyAndVisible() 
関連する問題