我正在尝试在我的应用中创建一个活动指示器。我正在使用故事板,我创建了一个推动另一个视图的按钮。
以下是我打开另一个视图的方式:
- (IBAction)openView {
NSLog(@"View is loading");
@try {
UINavigationController *nav = [storyboard instantiateViewControllerWithIdentifier:@"viewOpenSegue"];
[nav setModalPresentationStyle:UIModalPresentationFullScreen];
[self presentModalViewController:nav animated:YES];
}
@catch (NSException *exception) {
NSLog(@"Error");
}
@finally {
NSLog(@"View loaded");
}
}
到目前为止,每件事都很好。我在打开视图之前获得了日志,在完全加载之后获得了第二个日志。
但是当我想使用addSubview方法时,我有一种奇怪的行为。
NSArray *subviewArray2 = [[NSBundle mainBundle] loadNibNamed:@"View" owner:self options:nil];
loadingView = [subviewArray2 objectAtIndex:0];
这就是我加载视图的方式。我像这样添加/删除:
[self.view addSubview:loadingView];
//@try block
//@catch block
//@finally
{
[loadingView removeFromSuperview];
}
我希望视图在屏幕上显示和消失。但是在推出视图之前看起来像是1毫秒然后突然消失。
如果我在viewDidLoad下添加这种方式,它会出现。
我见过类似的问题,但他们并没有帮助我。有人有线索吗?我应该尝试别的吗?
提前致谢。
答案 0 :(得分:0)
此nib文件View.xib是否具有文件所有者?
答案 1 :(得分:0)
它发生的原因是第一个viewdidload执行比viewdidapper方法。每次推送或弹出视图时都会加载viewdidappear,因此如果要在视图加载时首先执行它,请在viewdidload中编写代码。
答案 2 :(得分:0)
因为我没有使用selector
。请参考this question。
以下是优化代码:
[self.view addSubview:loadingView];
[self performSelector:@selector(openView) withObject:nil afterDelay:0];