gpt4 book ai didi

ios - 具有共享数据的应用程序的初始点

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:16:24 25 4
gpt4 key购买 nike

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

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

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

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

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

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

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

最佳答案

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

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

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

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com