如何解决在Swift中的标签和VC之间共享数据
我有一个带有自定义标签栏控制器的应用程序,以及一个由stateController支持的数据模型。我想在标签之间共享模型中的数据。
少量标注:
- 我的应用同时使用情节提要和程序化(Swift 5)。在此处使用情节提要
- 在加载应用程序时,我检查userDefaults以查看它是否是首次启动。如果是,则firstTimeVC是rootVC
- 如果不是,则我的选项卡栏是rootVC。这种逻辑存在于场景委托中
我正在使用Dependency Injection在各个选项卡之间创建我的数据模型的共享实例。人们建议使用App / Scene Delegate将数据模型注入到我的TabBar和childVC中。问题是,TabBar并不总是rootVC。
我的问题是:
- 我可以直接从TabBar将数据模型注入TabBar的子VC吗?代替场景委托吗?
- 如果我使用Scene Delegate,那么当TabBar不是rootVC(即首次启动应用程序)时,如何将数据模型注入TabBar的childVCs中?
- 或者TabBar应该始终是rootVC,我将首次启动检查移至childVC而不是Scene Delegate
- 什么是正确的方法?
我第一次进行应用启动检查(当前在Scene Delegate中):
if isFirstLaunch {
rootViewController = "FirstTimeUserViewController"
} else {
rootViewController = "TabBarController"
}
window?.rootViewController = rootViewController
window?.makeKeyAndVisible()
我的依赖项注入(当前在Scene Delegate中):
let tabBarController = storyboard.instantiateViewController(withIdentifier: "CustomTabBarController") as! CustomTabBarController
for child in tabBarController.viewControllers ?? [] {
if let top = child as? StateControllerProtocol {
top.setStateController(stateController: stateController)
}
}
我的情节提要和VC设置的屏幕截图:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。