2012-12-16 56 views
0

我在的appDelegate創建自定義導航控制器:問題與自定義導航控制器的iOS 6

self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; 

poemsView = [[[PoemsViewController alloc]initWithNibName:@"PoemsViewController" bundle:nil] autorelease]; 
self.navigationController = [[[UINavigationController alloc] initWithRootViewController:poemsView] autorelease]; 
self.navigationController.navigationBarHidden = YES; 


self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController" bundle:nil] autorelease]; 
self.window.rootViewController = self.navigationController; 

[self.window makeKeyAndVisible]; 

所以這個問題是我需要的viewController我的應用程序的午餐,但如果我把我的viewController爲RootViewController的,我的導航控制器不會推導航,反之亦然,如果將我的導航控制器設置爲根,則不會從菜單或主視圖控制器加載應用程序。

+0

你是如何定製導航欄的?典型的解決方案包括使用'appearance'自定義標準導航控制器的外觀,在'UINavigationBar'上放置一個類別並替換它的'drawRect'。你能解釋你想要在你的定製中做什麼嗎?你通常不想爲UINavigationController子類(不是你所做的就是這樣),但我不清楚你想做什麼。建議將取決於您試圖達到的效果。 – Rob

+0

ViewController的目的是什麼?如果你使用它作爲臨時的東西,比如登錄或啓動屏幕,我會從PoemsViewController中以模態方式呈現它。 – rdelmar

回答

1

爲什麼你創建Poemsview作爲導航控制器的rootviewcontroller?

如果您想首先加載ViewController然後使用下面的代碼。

self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; 

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

poemsView = [[[PoemsViewController alloc]initWithNibName:@"PoemsViewController" bundle:nil] autorelease]; 

self.navigationController = [[[UINavigationController alloc] initWithRootViewController:self.viewController] autorelease]; 

self.navigationController.navigationBarHidden = YES; 



self.window.rootViewController = self.navigationController; 

[self.window makeKeyAndVisible]; 

您可以創建另一個導航控制器作爲Sub-class of Viewcontroller.

在你的詩按鈕操作添加以下內容:

// Create a regular view controller. 
PoemViewController *modalViewController = [[[PoemViewController alloc] initWithNibName:@"PoemViewController" bundle:nil] autorelease]; 

// Create a navigation controller containing the view controller. 
UINavigationController *secondNavigationController = [[UINavigationController alloc] initWithRootViewController:modalViewController]; 

// Present the navigation controller as a modal view controller on top of an existing navigation controller 
[self presentModalViewController:secondNavigationController animated:YES]; 

現在你可以能夠推詳細視圖從您tableview DidselectRowAtindexpath

+0

我知道,但然後導航控制器不會在詳細viewViewController例如因爲它的根沒有定義! – Momi

+0

你檢查過我的代碼嗎'self.viewcontroller'是'rootviewcontroller'。 –

+0

他是對的,你的rootViewController在這裏是導航控制器,它在堆棧底部有self.viewController。它應該工作,試試看。 –