プログラミングノート

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

UIViewControllerの利用

昨日の作ったUIViewをUIViewController経由で利用するように修正します。


1. 新規ファイルで UIViewController subclass (MyViewController)を追加します。
2. sample01AppDelegateのUIViewの箇所をUIViewControllerに変更します。
3. MyViewControllerのloadViewで、Viewをセットします。

sample01AppDelegate.h
#import <UIKit/UIKit.h>
@class MyViewController;
@interface sample01AppDelegate : NSObject <UIApplicationDelegate> {
  UIWindow *window;
  MyViewController *myViewController;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) MyViewController *myViewController;
@end
sample01AppDelegate.m
#import "sample01AppDelegate.h"
#import "MyViewController.h"
@implementation sample01AppDelegate
@synthesize window, myViewController;

- (void)applicationDidFinishLaunching:(UIApplication *)application {    
  //ViewControllerを生成
  MyViewController *mvc = [[MyViewController alloc] initWithNibName:nil bundle:nil];
  self.myViewController = mvc;
  [mvc release];
	
  //ViewControllerのViewを設定してwindowを表示する
  [window addSubview:myViewController.view];
  [window makeKeyAndVisible];
}

- (void)dealloc {
  [myViewController release];
  [window release];
  [super dealloc];
}
@end
MyViewController.m
- (void)loadView {
  MyView *mv = [[MyView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
  self.view = mv;
  [mv release];
}


IBで作ったxibファイルを利用したい場合は、sample01AppDelegate.mで [[MyViewController alloc] initWithNibName:@"XXX.xib" bundle:nil]; とxibファイルを指定し、MyViewControllerのloadViewをコメントアウトすればOKです。


xibを読み込んだ後などに、コードでUI部品を追加したり、IBで設置したUI部品の設定を変更したい場合には、viewDidLoadで処理します。