2012年2月27日月曜日

NavigationControllerにて画面遷移するようにしておく

俺俺テンプレート第一弾ってことで、まずは画面遷移を作っていきたいと思います。

AddSubViewパターンとかmodalViewパターンはいつでも使えるので、ここではやらない。
NavigationControllerを使ったパターンを実装していきます。



まずはsingleViewのテンプレートにて新しいプロジェクトを作る

1、NavigationControllerによる画面の遷移を実装する。
AppDelegate.h
rootControllerプロパティを追加

#import <UIKit/UIKit.h>

@class ViewController;

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;
@property (nonatomic,retain) UINavigationController* rootController;
@property (strong, nonatomic) ViewController *viewController;

@end



AppDelegate.m
起動時に呼ばれるメソッドを少しいじる

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    // Override point for customization after application launch.
    self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController" bundle:nil] autorelease];
   
    //起点となるViewControllerを設定
    rootController = [[UINavigationController alloc]initWithRootViewController:_viewController];//追加
   
    self.window.rootViewController = self.rootController;//変更
    [self.window makeKeyAndVisible];
    return YES;
}




#動作を確認の為の準備
適当なViewControllerをプロジェクト上に作る。ここではSecondViewControllerとする。


ViewControllerに #importする。
ViewControllerに適当なボタンを作ってIBActionのメソッドを実行できるようにする。

メソッドの中は下記の通り

-(IBAction)buttonDidPush:(id)sender{
    SecondViewController* viewController =
    [[SecondViewController alloc]initWithNibName:@"SecondViewController" bundle:nil];
    [self.navigationController pushViewController:viewController animated:YES];
    [viewController release];
}



アプリを起動してボタンを押したら画面が遷移したら成功だ。
 ちゃんちゃん


2 件のコメント:

  1. とおりすがりですが、

    - (BOOL)application:
    の以下の部分は、
    × rootController =
    ◎ self.rootController =

    ですね。

    返信削除
    返信
    1. 追加です。
      AppDelegate.mに

      @synthesize rootController = _rootController;
      を追記する必要もあるみたいです?

      お邪魔しました。ありがとうございました。

      削除