OStack程序员社区-中国程序员成长平台

标题: ios - 具有共享数据的应用程序的初始点 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 06:21
标题: ios - 具有共享数据的应用程序的初始点

这是我的 iOS 应用程序的结构:

                 / NavigationController -> ViewController -> ...
TabBarController - NavigationController -> ViewController -> ...
                 \ NavigationController -> ViewController -> ...

TabBarController 在应用程序的初始点有 3 个选项卡,然后通过 NavigationControllers 开始通过 ViewControllers 导航。

我需要在应用程序中有一个地方可以访问嵌入在 NavigationControllers 中的每个 ViewController。假设它是一个 Controller ,它是一些通知的观察者并将数据发送到 ViewControllers。这个 Controller 在启动应用后也需要做一些操作。

我的问题是这个 Controller 应该放在应用程序的哪个位置。第一个想法是把所有的代码放到 TabBarController 中,因为它是初始点,所以它可以在启动后进行操作,并且可以通过 NavigationControllers 访问 ViewControllers。但是 TabBarController 只是容器,所以它不应该包含与导航无关的附加代码,对吧?

下一个想法是将 ViewController 放在 TabBarController 之前,以便 ViewController 是应用程序的初始点。在 viewDidLoad 上我做了一些在启动时必须做的操作,然后注册通知的观察者和在 viewDidAppear 我呈现 TabBarController。但问题是当我想将数据传递给 ViewControllers 时,这些数据必须通过 2 个容器(TabBarController 和 NavigationController)发送,这似乎相当复杂。

你怎么看?我应该为此目的使用 TabBarController 还是应该创建新的 ViewControler 作为新的初始点?或者我应该使用 app delagate 吗?谢谢



Best Answer-推荐答案


有许多可能的解决方案。看起来您的 Controller 甚至不需要是 View Controller ,因为它的实际职责是数据。

所以,我建议创建一个 View Controller ,它基本上是启动图像的副本,可能带有进度指示器,但它所做的只是坐在那里等待 - 没有逻辑。逻辑位于它(或应用程序委托(delegate))触发的数据 Controller 中。逻辑完成后,“启动 VC”会收到回调并推送到选项卡 Controller 。

现在您可以选择注入(inject)、单例引用或观察数据 Controller 如何与选项卡通信。如果 View Controller 不向数据 Controller 发出请求,那么观察数据事件似乎是最好的选择。如果他们这样做,那么注入(inject)可能是最好的。

关于ios - 具有共享数据的应用程序的初始点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29531494/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4