2011-09-22 47 views
0

当UIViewController启动时,我想立即启动另一个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]; 
    ... 
} 

是否有可能得到它的无延迟工作?

回答

0

请在您的viewDidAppear方法中调用startNewController而不是发生这种情况,因为当您尝试呈现模式viewController时,您的viewController未完全加载,所以这就是为什么它在等待时才起作用。

+0

不,不起作用。只有afterDelay与viewDidLoad一起使用。 – blinsky

+0

将无法​​在viewDidLoad中工作。 – samfisher

+0

你是对的,有点混乱,我纠正了我的答案;) – ender

0

实际上,您不应计划强制您执行此类实现的应用程序体系结构。虽然,我能理解有些情况下,你就没有出路倍..

我说:你的情况 最好的解决方案是从

打电话给你的控制器viewDidAppear

viewWillAppear中

+0

我会尽力解释这种实现的必要性。根控制器充当具有“下载”等的加载器。当装有图形的另一个控制器执行功能菜单时,它将被显示。当选择一个菜单项时,我卸载当前的控制器并通过新的根控制器运行。希望解释清楚。 – blinsky

+0

* err“正在载入”等。抱歉 – blinsky

相关问题