昨日の作った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で処理します。