我使用OneSignal
来处理我的应用中的通知。这是在AppDelegate.swift
中启动的,其中有一个处理收到的应用的函数:
let notificationReceivedBlock: OSHandleNotificationReceivedBlock = { notification in
print("Received Notification: \(notification!.payload.body)")
}
然后我有一个带有5个标签的TabViewController
,每个标签的navigationItem都有一个UINavigationBarButton
,可以将您转到消息视图。每当有通知进入时,我想更改该按钮中的徽章编号,以显示用户正在收到新消息。我在每个viewController(每个5个选项卡)中都有一个函数来更新它。
问题是AppDelegate
需要调用此函数updateBadgeNumber
而我不知道如何执行此操作。此外,有些标签甚至可能尚未初始化。有谁知道如何从AppDelegate
?
谢谢。
编辑:
感谢下面的@paulvs找到了解决方案。他把我与答案联系起来,我找到了这个答案:Find Top View Controller in Swift
答案 0 :(得分:1)
答案取决于您的drawBuffers([NONE, NONE, NONE, COLOR_ATTACHMENT3])
是否是您应用的根视图控制器。
UITabBarController
是根视图控制器,您可能会在应用代理中引用它,并可以使用UITabBarController
的{{1}}属性来获取当前值查看控制器,然后设置徽章值。 (如果您没有引用,可以将UITabBarController
强制转换为selectedViewController
来访问它。)window.rootViewController
,您可以将UITabBarController
投射到UITabBarController
,然后从那里访问其他视图控制器并设置其徽章值。)