gpt4 book ai didi

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

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

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

要查看我指的是什么,请在您的 iPhone 上加载“电话”应用程序,然后您可以在键盘上输入一个数字,切换标签页,再切换回键盘,您输入的数字将保留在那里。这对于电话应用程序来说是一个理想的特性,但对于我正在设计的东西来说并不是那么多。

有办法实现吗?或者,我应该使用其他方法在切换标签时更新我的​​ View 吗?

最佳答案

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

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

每次您通过选项卡栏返回时都会触发此操作,并且应该会为您提供所需的结果。但是,根据您下一步的操作,有一些注意事项可能无法提供所需的功能:

  • 当通过弹出堆栈到达屏幕时,屏幕将被更新(根据您的描述,这可能没问题)。
  • 如果您开始使用滑动手势在堆栈中向后导航,但中止导航,屏幕也会更新。 (因为这会触发 viewWillAppearviewDidAppear)。

如果后者是一个问题,一种方法是通过 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)viewDidDisappear:(BOOL)animated{
[super viewDidDisappear:animated];
_shouldTriggerReload = YES;
}

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

- (void)viewDidLoad{
_shouldTriggerReload = YES;
}

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

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