2011-11-15 136 views
7

我有一個iPhone項目,它當前沒有UINavigationController。相反,我通過自己處理視圖層次來交換視圖。但是 - 正如你可能知道的 - 這是不好的做法,所以我想弄清楚如何在當前的應用程序中實現UINavigationController。我明顯可以開始我的項目並使用Xcode模板,但我真的不想這樣做。iPhone SDK - 以編程方式添加UINavigationController

必須有一種方法來以編程方式執行此操作。但我無法弄清楚AppDelegate需要什麼代碼。有人對這個有經驗麼?我目前處於虧損狀態。

乾杯, 佈雷特

回答

18

葉氏。

- (void)applicationDidFinishLaunching:(UIApplication *)application 
{ 
    navController=[[UINavigationController alloc] init]; 
    MyViewController *firstController=[[MyViewController alloc] init]; 
    [navController pushViewController:firstController animated:NO]; 
    [window addSubview: navController.view]; 
} 
- (void) dealloc 
{ 
    ... 
    [navController release]; 
    ... 
} 

這是一個相當普遍的問題,看看這太....創建和釋放導航控制器的 Programmatically add UINavigationController in UIViewController

+0

我想你應該把動畫:是的。因爲大部分時間。我們想在移動到新視圖之前控制器動畫。謝謝 :) – hqt

1
在Xcode 4在接口編輯器

,打開初始視圖控制器,然後選擇 '編輯>嵌入在>導航控制器'

1

例如:

UINavigationController *navCon = [[UINavigationController alloc] init]; 
[navCon pushViewController:yourViewController animated:NO]; 
[navCon release]; 
0

我解決了同樣的問題使用這個。 !

- (void)applicationDidFinishLaunching:(UIApplication *)application 
{ 
     navController=[[UINavigationController alloc] init]; 
     MyViewController *firstController=[[MyViewController alloc] init]; 
     self.window.rootViewController = firstController; 
     [self.window addSubview navController.view]; 

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

// application.applicationIconBadgeNumber = 0; 
navController=[[UINavigationController alloc]initWithRootViewController:self.viewController]; 
self.window.rootViewController = navController; 
[self.window makeKeyAndVisible]; 
1

[我加導航控制器到我的標籤欄項目,它是可以正常使用

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


UIViewController *viewController1 = [[[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil] autorelease]; 

UIViewController *viewController2 = [[[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil] autorelease]; 

UIViewController *viewController3 = [[[ThirdViewController alloc] initWithNibName:@"ThirdViewController" bundle:nil] autorelease]; 

self.tabBarController = [[[UITabBarController alloc] init] autorelease]; 


self.tabBarController.viewControllers = @[viewController1, viewController2,viewController3]; 


self.navigationController= [[UINavigationController alloc]initWithRootViewController:self.tabBarController]; 

// self.window.rootViewController = self.tabBarController;

self.window.rootViewController = self.navigationController; 


[self.window makeKeyAndVisible]; 


return YES; 
相關問題