0

当 UIViewController 启动时,我想立即启动另一个 UIViewController。这不起作用:

-(void) awakeFromNib {
    UIViewController *newcontroller = [[[UIViewController alloc] init] autorelease];
    ...
    [self presentModalViewController:newcontroller animated:YES];
}

为了使它起作用,我必须为一个方法执行 afterDelay,如下所示:

-(void) awakeFromNib {
    [self performSelector:@selector(startNewController) withObject:nil afterDelay:0.5];
    [super init];
}
-(void) startNewController {
    UIViewController *newcontroller = [[[UIViewController alloc] init] autorelease];
    ...
}

是否有可能毫不拖延地让它工作?

4

2 回答 2

0

而是调用startNewController您的viewDidAppear方法,这是因为当您尝试呈现模态 viewController 时您的 viewController 并未完全加载,所以这就是它在您等待时起作用的原因。

于 2011-09-22T09:15:04.347 回答
0

实际上,您不应该计划强迫您执行此类实现的应用程序架构。不过,我能理解有些时候你没有出路..

我会说:您的情况的最佳解决方案是调用您的控制器

viewDidAppear

或者

视图将出现

于 2011-09-22T09:46:11.647 回答