2011-08-02 179 views
2

我有一個視圖內的大小爲320x218的UIView(下圖代碼中的menuView)。我想加載一個導航控制器到這個視圖。即時通訊使用以下代碼來做到這一點:UINavigationController不顯示根視圖控制器

MenuViewController *menuController = [[MenuViewController alloc] initWithNibName:@"MenuViewController" bundle:nil]; 

UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:menuController]; 
navigationController.navigationBarHidden = YES; 

[menuView addSubview:navigationController.view]; 
[menuController release]; 
[navigationController release]; 

當我執行它,根視圖未在該視圖中顯示。只顯示導航欄,其餘視圖爲空。

編輯:

我剛放置在兩個initWithNibName一個的NSLog():和viewDidLoad中:MenuViewController的。那個在initWithNibName:被調用,但一個在viewDidLoad中:不:S

更新:

我試着把menuControllernavigationController思維,因爲它沒有出現,它可能不是在疊加。例外:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Pushing the same view controller instance more than once is not supported 
+0

確實存在MenuViewController.xib試試這個代碼和名稱是否正確? –

+0

是的,是的。我只在MenuViewController的initWithNibName:和viewDidLoad中放置了一個NSLog()。 initWithNibName中的那個被調用,但viewDidLoad中的那個:不是:S –

+0

看完您的評論後,您可以放置​​一行menuController.view;在你創建navigationController之後?只需添加該行,讓我知道結果。 –

回答

3

我在這裏找到了答案:

UIViewController -viewDidLoad not being called

我不得不以加載我的根視圖控制器的看法-initWithRootViewController後的代碼中加入這一行:

navigationController.navigationBarHidden = YES; 
[navigationController setView:menuController.view]; 
0

你不應該添加navigationViewController作爲一個子視圖您MenuViewController。 由於navigationViewController已經擁有MenuViewController。

只顯示navigationViewController。

+0

menuView不是menuViewController的一個對象,它的一個對象UIView –

8

通話layoutsubviews做工作。

[super loadView]; 
[self.view addSubview:navigationController.view]; 
[navigationController.view layoutSubviews]; 
+1

好點,我現在可以去睡覺了 – jeswang

0
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; 
// Override point for customization after application launch. 

ViewController *viewController = [[[ViewController alloc] initWithNibName:@"ViewController" bundle:nil] autorelease]; 

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

self.window.rootViewController = self.navController; 

在你的appdelegate方法

相關問題