Xcode3環境でInterfaceBuilderを利用しないプロジェクトの作成方法について解説します。
InterfaceBuilderを利用しないプロジェクトを作成するには、以下の操作を行います。
具体的な操作手順は次の通りです。
Xcode3でiPhone用のView-based Applicationプロジェクトを新規作成します。
InterfaceBuilder用のxibファイルをプロジェクトから削除します。プロジェクトのResourcesグループにある、(プロジェクト名)ViewController.xibとMainWindow.xibを削除します。
プロジェクトのplistファイルから、nibファイルの定義を削除します。nibファイルはxibファイルから生成されるファイルで、画面に表示するWindow/ViewController/Viewなどを格納しています。手順「2.」でxibファイルを削除したので、合わせてnibファイルを利用しないようにplistファイルを修正します。
nibファイルの定義は「Main nib file base name」キーで定義されています。Xcodeでプロジェクトのplistファイルを開き、「Main nib file base name」項目を選択した状態でdeleteキーを押下して定義を削除します。
main.mファイルのUIApplicationMain関数呼び出し箇所で、アプリケーションDelegateクラス名称を指定します。
int retVal = UIApplicationMain( argc, argv, nil, nil );
int retVal = UIApplicationMain( argc, argv, nil, @"(プロジェクト名)AppDelegate" );
「(プロジェクト名)AppDelegate」はプロジェクト名称に合わせて適宜変更してください。
UIApplicationMain関数の第4引数がnilの場合、プロジェクトplistの「Main nib file base name」キーで定義したnibファイルが自動的に読み込まれ、nibファイル内で定義しているアプリケーションDelegateクラス呼び出されます。しかし、手順「3.」でnibファイルを利用しないように設定したため、アプリケーションDelegateクラスを明示的に指定します。
(プロジェクト名)AppDelegate.mファイルのdidFinishLaunchingWithOptions関数に、UIWindowとViewControllerの生成処理を追加します。
window = [ [ UIWindow alloc ] initWithFrame:[ [ UIScreen mainScreen ] bounds ] ];
viewController = [ [ (プロジェクト名)ViewController alloc ] init ];
[ window addSubview:viewController.view ];
「(プロジェクト名)ViewController」はプロジェクト名称に合わせて適宜変更してください。
xibファイル/nibファイルを利用する場合は、nibファイル内でUIWindowやViewControllerの生成が自動的に行われます。しかし、xibファイル/nibファイルを利用しない場合は、UIWindowなどの生成を明示的に行います。
(プロジェクト名)ViewController.mファイルにloadView関数を追加し、View作成処理を記述します。
- ( void )loadView {
[ super loadView ];
UIView * testView = [ [ [ UIView alloc ] initWithFrame:self.view.bounds ] autorelease ];
testView.backgroundColor = [ UIColor orangeColor ];
[ self.view addSubview:testView ];
}
なお、xib(nib)ファイルの有無とloadView/viewDidLoad関数が呼び出される関係は以下の通りです。
プロジェクトをビルド&実行して、画面が表示されれば完了です。