我正在使用OneSignal
我的应用程序处理通知。这是在AppDelegate.swift
有处理接收到的应用程序的函数的地方启动的:
let notificationReceivedBlock: OSHandleNotificationReceivedBlock = { notification in
print("Received Notification: \(notification!.payload.body)")
}
然后我有TabViewController
5 个选项卡,每个选项卡的导航项都有一个UINavigationBarButton
将您发送到消息视图。每当收到通知以显示用户收到新消息时,我都想更改该按钮中的徽章编号。我在每个 viewController(5 个选项卡中的每一个)中都有一个函数来更新它。
问题是AppDelegate
需要调用这个函数updateBadgeNumber
,我不知道如何做到这一点。另外,某些选项卡甚至可能尚未初始化。有谁知道如何从AppDelegate
?
谢谢你。
编辑:
感谢下面的@paulvs 找到了解决方案。他把我链接到一个我找到的答案:Find Top View Controller in Swift
答案取决于您是否UITabBarController
是应用程序的根视图控制器。
UITabBarController
是根视图控制器,您可能在应用程序委托中引用了它,并且可以使用UITabBarController
的selectedViewController
属性来获取当前视图控制器,然后设置徽章值。(如果您没有引用,您可以强制window.rootViewController
转换UITabBarController
为访问它。)UITabBarController
,您可以强制转换parentViewController
为 a UITabBarController
,然后从那里访问其他视图控制器并设置它们的标记值。)本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句