どこが違うのか気になったのでメモ。
Window-based ApplicationをView-based Applicationと同じところまで持っていく作業を書き出してみます。
※ Xcode 4.1で動作確認しています。
###Window-based Applicationを作成
###RootViewControllerを作成
File - New - New FileでUIViewControllerテンプレートを選び、RootViewController(.h, .m, .xib)を作成する
###Interface Builderで作業
MainWindow.xibを開く
View - Utilities - Show Object Library を開いて、
- View ControllerをDrag & Drop
View - Utilities - Show Identity Inspector を開いて、
- 先にDropしたView Controllerを選択
- Custom ClassのClassをRootViewControllerに
- (LabelをRoot View Controllerに)
View - Utilities - Show Attributes Inspector を開いて、
- View ControllerのNIB NameをRootViewControllerに
View - Assistant Editor - Show Assistant Editor を開いて、
- AppDelegateクラス(h)を開く
- IB上でoptionキーを押しながらRoot View Controllerを選択、(hファイル上まで)DragしてInsert Outlet Connectionを追加(Name:viewController)
下記のようにコード生成されます:
rails>>
@interface RootViewControllerProtoAppDelegate : NSObject {
RootViewController *_viewController;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet RootViewController *viewController;
<<--
###エディタでの作業
AppDelegateクラスのhで、@classを追加:
rails>>
@class RootViewController;
<<--
AppDelegateクラスのmで、#import、さらにself.viewControllerをself.window.rootViewControllerに
rails>>
#import "RootViewController.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
return YES;
}
<<--
厳密に言うと、View-based ApplicationではviewControllerの宣言のされ方が若干違います。そこは各自確認下さいませ。。
作業をしてみてIB経由でクラスにViewController変数を追加するのはやったことなかったので、とても勉強になりました :)