菜鸟教程小白 发表于 2022-12-13 06:21:54

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


                                            <p><p>这是我的 iOS 应用程序的结构:</p>

<pre><code>               / NavigationController -&gt; ViewController -&gt; ...
TabBarController - NavigationController -&gt; ViewController -&gt; ...
               \ NavigationController -&gt; ViewController -&gt; ...
</code></pre>

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

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

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

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

<p>你怎么看?我应该为此目的使用 TabBarController 还是应该创建新的 ViewControler 作为新的初始点?或者我应该使用 app delagate 吗?谢谢</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>有许多可能的解决方案。看起来您的 Controller 甚至不需要是 ViewController ,因为它的实际职责是数据。</p>

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

<p>现在您可以选择注入(inject)、单例引用或观察数据 Controller 如何与选项卡通信。如果 ViewController 不向数据 Controller 发出请求,那么观察数据事件似乎是最好的选择。如果他们这样做,那么注入(inject)可能是最好的。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 具有共享数据的应用程序的初始点,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/29531494/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/29531494/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 具有共享数据的应用程序的初始点