プログラミングノート

一からものを作ることが好きなエンジニアの開発ブログです。

UINavigationControllerの利用

Interface Builderを利用せずにナビゲーションメニューを実装します。今回はソースコードをアップしたので主要な箇所のみ載せてます。



まずはapplicationDidFinishLaunchingでUINavigationControllerを生成、スタイルを設定し、起動時に表示するUIViewControllerを追加します。

sample01AppDelegate.m
- (void)applicationDidFinishLaunching:(UIApplication *)application {    
  
  MyViewController *mvc = [[[MyViewController alloc] initWithNibName:nil bundle:nil] autorelease];
  
  naviController = [[UINavigationController alloc] init];

  //UIControllerViewを追加
  [naviController pushViewController:mvc animated:NO];
  
  //バーを消す
  //[naviController setNavigationBarHidden:YES animated:NO];

  //バーのスタイルを指定
  //[naviController.navigationBar setBarStyle:UIBarStyleBlackOpaque];  

  //バーの色を指定
  //naviController.navigationBar.tintColor = [UIColor grayColor];
  
  [window addSubview:naviController.view];
  [window makeKeyAndVisible];
}


UIViewControllerのinitWithNibNameで設定したタイトルがナビゲーションバーに表示されます。UIパーツを追加する場合はviewDidLoadで。ここでは次ページに遷移するためのボタンを追加しています。ページ遷移させるのはpushViewControllerでUIViewControllerを指定するだけなので楽チンです。

MyViewController.m
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
  if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
  self.title = @"PAGE1";
  }
  return self;
}

- (void)viewDidLoad {
  [super viewDidLoad];
  
  //バーにボタンを追加
  UIBarButtonItem *button = [[UIBarButtonItem alloc] 
                  initWithTitle:@"次ページ" 
                  style:UIBarButtonItemStyleBordered
                  target:self 
                  action:@selector(goNextPage:)
                  ]; 
  self.navigationItem.rightBarButtonItem = button;
  [button release];   
}

-(void)goNextPage:(id)sender{  
  MyViewController2 *mvc2 = [[[MyViewController2 alloc] initWithNibName:nil bundle:nil] autorelease];
  [self.navigationController pushViewController:mvc2 animated:YES];  
}