1

在自定義UIViewController,如果我有一個構件UINavigationController我與self初始化爲根視圖,這樣的:根視圖控制器和模態對話框

navController = [[UINavigationController alloc] initWithRootViewController:self]; 

然後呈現一個模態對話框不隱藏的標籤在屏幕底部的酒吧。結果是,如果用戶在顯示模式對話框時切換到不同的選項卡,當他們彈回到顯示模態對話框的選項卡時,即使我打電話,隨後對presentModalViewController的調用也不會顯示模態對話框dismissModalViewControllerAnimated作爲製表符切換的結果。

如果我初始化出設定self作爲根控制器的UINavigationController,

navigationController = [[UINavigationController alloc] init]; 

然後按預期標籤欄被隱藏。我在程序中改變了一些東西,這對我來說不再是一個問題,但我不確定我是否明白爲什麼會發生這種情況。如果導航控制器將要顯示模態對話框,那麼以self爲根的導航控制器被認爲是不好的做法?

回答

1

我從來沒有加入自己的根控制器

我總是有一些控制器,得到一個NavigationController.view添加到自身。 然後,將在導航層次結構中顯示的第一個ViewController作爲rootViewController添加。這只是「第一頁」的另一個詞(一開始所有的命名都可能相當混亂)。

實例MyProjectAppDelegate.m:

UITableViewController *startScreen = [[UITableViewController alloc] init]; 
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:startScreen]; 
[window addSubview:navController.view]; 

你也應該不會的UITabBarController,如果你想有一個navigationcontroller「頁」,您可以建立一個自定義的UITabBarController標籤欄混合的UINavigationController。

這將告訴你如何http://github.com/wiredbob/NavTab

(我有很大的問題,在理解這一切的視圖/控制器築巢自己和這個項目確實取得了區別。你可以說這是代碼,我真的學到了如何將程序進行iPhone/Mac與:DD)

+0

感謝您的鏈接。我會看看這個代碼! – Tony 2010-06-12 02:30:37