2010-05-03 53 views
0

我對目標c比較陌生,但不能編程,並且卡在我的iphone應用程序中。pushViewController不能用tabbar和導航條顯示UIView/Nib

我創建了一個基於導航的應用程序,包含導航欄和標籤欄控制器。我將標籤欄設置爲根控制器。我能夠在沒有任何問題的情況下切換到各個UIViews和UITableViews。

我的問題是,在我從TabBarController調用的其中一個UITableViews中,didSelectRowAtIndexPath函數假設顯示一個新的UIView。下面的代碼不會給出任何錯誤並且運行良好,但不會顯示新的Nib。

if(newViewController == nil) { 
NSLog(@"yes nil"); 
BookViewController *aNewViewController = [[BookViewController alloc] initWithNibName:@"BookOptionView" bundle:nil]; 
self.newViewController = aNewViewController;  
[aNewViewController release];  
} 
BookAppDelegate *delegate = (BookAppDelegate *)[[UIApplication sharedApplication] delegate]; 
[delegate.appNavBar pushViewController:newViewController animated:YES]; 

現在,當我做下面的,它工作正常,但它擺脫了導航和標籤這我假設,因爲它是一個模態調用,而不是推視圖控制器。

BookViewController *screen = [[BookViewController alloc] initWithNibName:@"BookOptionView" bundle:[NSBundle mainBundle]]; 
screen.modalTransitionStyle = UIModalTransitionStyleCoverVertical; 
[self presentModalViewController:screen animated:YES]; 
[screen release]; 

任何想法,爲什麼我不能得到的視圖控制器正確推?在我的應用程序委託文件中,我聲明瞭一個名爲appNavBar的AppNavBarController對象(從UINavigationController繼承)。

任何幫助,將不勝感激!

回答

0

如果你想展示你的觀點與導航控制器模式的看法,你可以如下做到這一點:

UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:myViewController]; 
[self presentModalViewController:navigationController animated:YES]; 

此外,從我所看到的,你有你的appdelegate你navcontroller。所以我想你正在使用一個全球導航控制器的所有標籤視圖,理想情況下不應該如此。你的navcontroller應該在你的標籤控制器中,最好你需要在不同的標籤中有不同的導航控制器。

+0

感謝您的回覆。你的代碼看起來像它會完成我提供的代碼,它會顯示一個新的UIView,而沒有全局導航欄和全局標籤欄。 – james 2010-05-03 13:31:58

0

我確實找到了我的答案。我不知道我明白爲什麼我的代碼不起作用,但以下完成我想要的: [self.navigationController pushViewController:newControllerName animated:YES];