2011-12-16 48 views
0

UISplitView的详细视图中,我想为子视图的UINavigationController的子视图添加子视图。使用NSTimer延迟子视图显示,但失败

我使用NSTimer *delayTimer延迟加载子视图,因为我使用动画淡入详细视图。

delayTimer = [NSTimer scheduledTimerWithTimeInterval:1.3 target:self 
selector:@selector(loadWelcomeView) userInfo:nil repeats:NO]; 

我想补充的观点被称为welcomeview

- (void) loadWelcomeView 
{ 
    NSLog(@"Welcome View Loaded."); 
    welcomeViewController = [[WelcomeView alloc] 
         initWithNibName:@"WelcomeView" bundle:nil]; 
    [self.navigationController addChildViewController:welcomeViewController]; 
} 

但是,当我运行该程序,等待,这是完全空白的!

但是,消息Welcome view loaded.已显示在调试窗口中。

如果我使用​​而不是使用NSTimer,则欢迎使用视图将显示为“完美”。

我做错了什么程序...?

回答

0

UI的东西需要在主线程上发生,所以让我们排除NSTimers可能带来的任何线程问题。尝试这样做:

- (void) loadWelcomeViewWithinMainThread 
{ 
    NSLog(@"Welcome View Loaded."); 
    welcomeViewController = [[WelcomeView alloc] initWithNibName:@"WelcomeView" bundle:nil]; 
    if(welcomeViewController) 
    { 
     if(self.navigationController) 
     { 
      [self.navigationController addChildViewController:welcomeViewController]; 
     } else { 
      NSLog(@"navigationController is null"); 
     } 
    } else { 
     NSLog(@"welcomeViewController is null"); 
    } 
} 

- (void) loadWelcomeViewWithinMainThread { 
    [self performSelectorOnMainThread: @selector(loadWelcomeViewWithinMainThread) withObject: nil waitUntilDone: YES]; 
}