2011-12-16 34 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]; 
}