单击通知时更改选项卡栏

Posted

技术标签:

【中文标题】单击通知时更改选项卡栏【英文标题】:Change Tab Bar When Notification is Clicked 【发布时间】:2017-04-26 19:31:11 【问题描述】:

只要用户收到通知并单击它,就应该将其带到该特定选项卡。例如,当用户收到消息并打开通知时,应用程序应该打开,但会打开消息选项卡。想想 twitter 和 dm 的。 在我的项目中,我试图实现一些非常相似的东西。在 appdelegate 和 notificationReceived(推送通知的 OneSignal)中,我尝试这样做:

 let sb: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
            let messageNavigationController: UINavigationController = sb.instantiateViewController(withIdentifier: "MessagesNav") as! UINavigationController
            self.window = UIWindow(frame: UIScreen.main.bounds)
            self.window?.rootViewController = messageNavigationController
            self.window?.makeKeyAndVisible()

但是什么也没发生。每当用户收到通知时,应用程序只会打开一个主选项卡(选项卡 0)。我做错了什么?

【问题讨论】:

【参考方案1】:

我不知道你说的notificationReceived是什么意思,这不是UIApplicationDelegate的预定义函数。如果您想在 OneSignal 发生推送通知时打开不同的页面,您可能应该将处理函数传递给 OneSignal.initWithLaunchOptionshandleNotificationAction

您还提到在标签控制器中更改标签,但您粘贴的代码将您的根视图设置为UINavigationController。如果您确实想更改选项卡,则需要获取对选项卡控制器的引用并在其上设置正确的selectedIndex

【讨论】:

感谢您的回答。我通过将其移至句柄通知操作和自定义标签栏控制器类来解决这个问题。

以上是关于单击通知时更改选项卡栏的主要内容,如果未能解决你的问题,请参考以下文章

视图控制器更改选项卡栏图标和操作

当点击 FCM 推送通知时,如何在选项卡栏中打开特定的视图控制器?

当我单击“AboSee”选项卡时,它会打开选​​项卡,但不显示选项卡栏

单击选项卡时,选项卡栏控制器不显示 XIB UIViewController

通知后,从应用程序委托将视图控制器推送到选项卡栏中

在 ViewController 中重新加载/刷新选项卡栏项目?