我有一个 UITabBarController ,它嵌套一个 UIView 子类(ImageViewer)作为它的第三个选项卡。
在这个 ImageViewer 子类中,我调用viewDidAppear
method:
- (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 ...
}
该方法是自动调用的,但奇怪的是,该视图只有在该方法完全处理后才出现?
当我按照指示设置断点(1 和 2)时,处理(选择选项卡后)会停止,而上一个选项卡仍然显示。只有在第二个断点后单击继续时,才会显示该视图。 (仅供参考,NSLog 会立即执行)。
在这种情况下viewDidAppear
行为更像viewWillAppear
....
有任何线索可能会发生什么吗?
Cheers
如果您想在视图加载时允许重新绘制屏幕,但要触发中的一些其他更新代码-viewDidAppear:
, use 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 将能够在视图加载后重新绘制屏幕。updateUI
将被称为next事件循环。如果您必须在加载视图后执行计算密集型计算或更新,那么这是获得快速视图转换的好方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)