2011-11-15 22 views
7

現在、iPhoneプロジェクトにはUINavigationControllerがありません。代わりに、ビューの階層を自分で処理することでビューを交換します。しかし、あなたが気づいているように、これは悪い習慣なので、現在のアプリケーションにUINavigationControllerを実装する方法を理解しようとしています。私は明らかに私のプロジェクトを始めることができ、Xcodeテンプレートを使用することができますが、私は本当にこれをしたくありません。iPhone SDK - プログラムでUINavigationControllerを追加する

これはプログラムで行う必要があります。しかし、AppDelegateでどのコードを実行する必要があるのか​​分かりません。誰にもこれに関する経験はありますか?私は現時点では迷っています。

乾杯、 ブレットインターフェースエディタでのXcode 4で

答えて

18

Yeap '>埋め込みで>ナビゲーションコントローラエディタ' を選択します。

- (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

は、最初のビューコントローラを開き、

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; 
関連する問題