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

标题: ios - 关于UITabBarController,有没有办法在选择新选项卡时强制 View 完全释放 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 06:16
标题: ios - 关于UITabBarController,有没有办法在选择新选项卡时强制 View 完全释放

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

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

有没有办法做到这一点?或者,我应该在切换选项卡时使用其他方法来更新我的 View 吗?



Best Answer-推荐答案


我认为 Neil Galiaskarov 评论说您不应该考虑发布该 View 。他将您当前的重新加载逻辑放入 -(void)viewWillAppear 的想法是合理的:

-(void)viewWillAppearBOOL)animated{ 
   [super viewWillAppeared:animated]; 
   // Any code you are currently triggering in your init / viewDidLoad 
   // to reload your database and display the result
}

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

如果后者是一个问题,可以通过 BOOL _shouldTriggerReload;:

viewWillAppear 逻辑包装在 if 中:

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
}

然后在你的 viewDidDisappear 中:

- (void)viewDidDisappearBOOL)animated{
   [super viewDidDisappear:animated];
   _shouldTriggerReload = YES;
}

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

- (void)viewDidLoad{
    _shouldTriggerReload = YES;
}

关于ios - 关于UITabBarController,有没有办法在选择新选项卡时强制 View 完全释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21642757/






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