立即从viewcontroller启动新的UIViewController

时间:2011-09-22 09:11:49

标签: objective-c uiviewcontroller awakefromnib

当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];
    ...
}

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

2 个答案:

答案 0 :(得分:0)

startNewController方法中调用viewDidAppear,这是因为当你尝试呈现模态viewController时,你的viewController没有完全加载,所以这就是你等待时它的工作原理。

答案 1 :(得分:0)

实际上,您不应该计划强制您执行此类实现的应用程序体系结构。虽然,我可以理解有时候你没有出路......

我会说: 您的案例的最佳解决方案是从

调用您的控制器
  

viewDidAppear

  

viewWillAppear中