1

我正在尝试在我的应用程序中创建一个活动指示器。我正在使用情节提要,并且创建了一个按钮,该按钮正在推动另一个视图。

这是我打开另一个视图的方法:

- (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 下添加这种方式,它就会出现。

我见过类似的问题,但他们没有帮助我。有人有线索吗?我应该尝试别的吗?

提前致谢。

4

3 回答 3

0

这个 nib 文件 View.xib 有文件所有者吗?

于 2012-04-17T16:48:12.517 回答
0

它发生是因为第一个 viewdidload 比 viewdidapper 方法执行。每次您推送或弹出视图时,viewdidappear 都会加载,因此如果您想在视图加载的第一个执行它,请在 viewdidload 中编写代码。

于 2012-04-17T17:12:13.147 回答
0

这是因为我没有使用selector. 请参考这个问题

这是优化后的代码:

[self.view addSubview:loadingView];  
[self performSelector:@selector(openView) withObject:nil afterDelay:0];
于 2012-04-23T17:49:08.713 回答