gpt4 book ai didi

iphone - 为什么 UITabBarController 中的 viewDidAppear 在 View 出现之前执行?

转载 作者:行者123 更新时间:2023-12-03 19:31:18 25 4
gpt4 key购买 nike

我有一个 UITabBarController,它嵌套了一个 UIView 子类(ImageViewer)作为它的第三个选项卡。

在此 ImageViewer 子类中,我调用 viewDidAppear 方法:

- (void) viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];

/* ... start custom code ...
NSLog(@"viewDidAppear tag 1 passed); /* BREAKPOINT 1 here

[myUIActivityIndicator stopAnimating];

NSLog(@"viewDidAppear tag 2 passed); /* BREAKPOINT 2 here
/* ... end custom code ...
}

该方法是自动调用的,但奇怪的是,该 View 只有在该方法处理完成后才出现?

当我按照指示设置断点(1 和 2)时,处理(选择选项卡后)会停止,而上一个选项卡仍然显示。只有在第二个断点后单击继续时,才会显示该 View 。 (仅供引用,NSLog 会立即执行)。

在这种情况下,viewDidAppear 的行为更像是 viewWillAppear ....

有什么线索可能发生吗?

干杯

最佳答案

如果您希望在 View 加载时允许重新绘制屏幕,​​但要触发 -viewDidAppear: 中的其他更新代码,请使用 performSelector:withObject:afterDelay:像这样:

- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[self performSelector:@selector(updateUI) withObject:nil afterDelay:0.0];
}



- (void)updateUI
{
// Do your UI stuff here
}

当你这样做时,当前的事件循环将很快完成,并且 UIKit 将能够在 View 加载后重新绘制屏幕。 updateUI 将在下一个事件循环中调用。如果您必须在 View 加载后执行计算密集型计算或更新,那么这是获得快速 View 转换的好方法。

关于iphone - 为什么 UITabBarController 中的 viewDidAppear 在 View 出现之前执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4297436/

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