菜鸟教程小白 发表于 2022-12-13 06:16:28

ios - 关于UITabBarController,有没有办法在选择新选项卡时强制 View 完全释放


                                            <p><p>我正在为 iPhone 创建一个标签栏应用程序,如果选择了一个新标签,我希望当前处于事件状态的任何 View 都能完全卸载/释放。当重新选择任何选项卡时,我希望它必须重新加载所有内容。我寻求此功能的原因是因为所有 View 都与单个数据库交互,并且可以修改数据库。构建 View 时,它们是从当前数据库构建的,这意味着它们可以在不强制重新加载 View 的情况下过期。</p>

<p>要查看我所指的内容,请在 iPhone 上加载“电话”应用程序,然后您可以在键盘上输入一个数字、切换选项卡、切换回键盘,然后您输入的数字就会保留在那里。这对于 Phone 应用来说是一个理想的特性,但对于我正在设计的应用来说并不是那么重要。</p>

<p>有没有办法做到这一点?或者,我应该在切换选项卡时使用其他方法来更新我的 View 吗?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我认为 Neil Galiaskarov 评论说您不应该考虑发布该 View 。他将您当前的重新加载逻辑放入 <code>-(void)viewWillAppear</code> 的想法是合理的:</p>

<pre><code>-(void)viewWillAppear:(BOOL)animated{
   ;
   // Any code you are currently triggering in your init / viewDidLoad
   // to reload your database and display the result
}
</code></pre>

<p>每次您通过标签栏返回时都会触发此事件,并且应该为您提供您想要的结果。但是,根据您接下来要执行的操作,有一些警告可能无法提供所需的功能:</p>

<ul>
<li>通过弹出堆栈到达屏幕时将更新屏幕(根据您的描述,这可能是可以的)。</li>
<li>如果您开始使用滑动手势在堆栈中向后导航但中止导航,则屏幕也会更新。 (因为这会触发 <code>viewWillAppear</code> 和 <code>viewDidAppear</code>)。</li>
</ul>

<p>如果后者是一个问题,可以通过 <code>BOOL _shouldTriggerReload;</code>:</p>

<p>将 <code>viewWillAppear</code> 逻辑包装在 if 中:</p>

<pre><code>if (_shouldTriggerReload){
   _shouldTriggerReload = NO; // Preparing for the next round
   // Any code you are currently triggering in your init / viewDidLoad
   // to reload your database and display the result
}
</code></pre>

<p>然后在你的 <code>viewDidDisappear</code> 中:</p>

<pre><code>- (void)viewDidDisappear:(BOOL)animated{
   ;
   _shouldTriggerReload = YES;
}
</code></pre>

<p>而且它还必须在你的 viewDidLoad 中为第一个条目设置:</p>

<pre><code>- (void)viewDidLoad{
    _shouldTriggerReload = YES;
}
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 关于UITabBarController,有没有办法在选择新选项卡时强制 View 完全释放,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/21642757/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/21642757/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 关于UITabBarController,有没有办法在选择新选项卡时强制 View 完全释放