gpt4 book ai didi

ios - 在 TabBarController 中打开 ViewController 处理推送通知

转载 作者:行者123 更新时间:2023-11-28 06:24:09 25 4
gpt4 key购买 nike

我有几个选项卡的 TabBarController。在每个选项卡中都有带有 ViewController 的 NavigationController,其中包含 TableView 和单元格。当用户按下单元格 - 他得到 DetailedViewController。

我想要得到的 - 是在我的应用程序收到推送通知时打开 DetailedViewController。

我在 AppDelegate 中使用 OneSignal 和我的 didFinishLaunchingWithOptions 看起来像(你看到我有 itemID 我想传递给 DetailedViewController)

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. 此代码出于某种原因无法正常工作 - 我没有达到预期效果需要带有 ViewController 的选项卡
  2. 我不知道如何直接从 TabBarController 打开 DetailedViewController
  3. 当我最终到达 DetailedViewController 时——当我按下它的后退按钮时会发生什么?没有带有项目列表的 ViewController - 在这种情况下我将导航到哪里?
  4. 该代码是否会很好地使用内存?

最佳答案

试试这个:首先实例化您的 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()

您还可以在此处自定义全局 tintColor:

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

最后设置你选择的索引:

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()

关于ios - 在 TabBarController 中打开 ViewController 处理推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42490338/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com