iPhone,iPadの画面開発ツールにInterface Builder(IB)があります。Apple謹製ということで使い勝手がよくのですが、ソース中にブラックボックスが入ることが嫌がる人、開発でGUIベースのツールを使いたくない人とInterface Builderを使わずに開発したい人は沢山いると思います。でも始めはどうすれば良いのか結構悩みます。決まりきった手順を覚えておけば簡単ですので、まとめておきます。ちなみにこの辺りのことは、iPhoneプログラミングUIKit詳解リファレンスに非常に丁寧に説明されています。
1.プロジェクトの作成
何でも良いです。今回はiPad向けのViewBaseプロジェクトでNoMoreIBという名前のプロジェクトを作成しました。

2.MainWindow.xibの削除
選択して削除するだけです。

3.info.plistの編集
info.plist(NoMoreIB-info.plist)を開いて、Main nib file base nameを削除します。
選択の上でDeleteキーを押せば、奇麗さっぱり消してくれます。

4.main.mの編集
info.plistのMain nib file base nameを消したことにより、メインウィンドウを自分で指定する必要があります。そこでmain.mで自分で指定する必要があります。UIApplicationMainの第4引数に起点となるクラスを指定すれば良いです。今回の場合だとNoMoreIBAppDelegateです。
元ソース
int retVal = UIApplicationMain(argc, argv, nil, nil);
修正後のソース
int retVal = UIApplicationMain(argc, argv, nil, @"NoMoreIBAppDelegate");
5.NoMoreIBAppDelegate.mの編集
ここまでの用意が出来たら、起動クラスであるNoMoreIBAppDelegateを編集すれば表示できるようになります。ポイントは、最初の二行。Windowを自分で作成の部分です。後は、色々なサンプルにある通りに作れば大丈夫です。
#import "NoMoreIBAppDelegate.h"
#import "NoMoreIBViewController.h"
@implementation NoMoreIBAppDelegate
@synthesize window;
@synthesize viewController;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Windowを自分で作成
CGRect frameForWindow = [[UIScreen mainScreen] bounds];
window = [[UIWindow alloc] initWithFrame:frameForWindow];
//以下、適当にラベルを作って表示します
CGRect rect = [window frame];
UILabel* label = [[UILabel alloc] initWithFrame:rect];
label.text = @"Hello, World";
[window addSubview:label];
[label release];
// Override point for customization after app launch
//[window addSubview:viewController.view];
[window makeKeyAndVisible];
return YES;
}
- (void)dealloc {
[viewController release];
[window release];
[super dealloc];
}
@end
6.ヘッダーの編集
直接的には関係ないようですが、ヘッダー中のIBOutletという記述も消しておく方がベターのようです。アプリケーションの挙動は変わらないのですが、これはInterface Builderに関係しているとの印です。
修正前
@property (nonatomic, retain) IBOutlet UIWindow *window; @property (nonatomic, retain) IBOutlet NoMoreIBViewController *viewController;
修正後
@property (nonatomic, retain) UIWindow *window; @property (nonatomic, retain) NoMoreIBViewController *viewController;
ちなみにiPhoneプログラミングUIKit詳解リファレンスですが、非常に解り易いのです。これからiPhone,iPadの開発を始めるという方には、お勧めの1冊です。
リックテレコム
売り上げランキング: 1617

長く使える一冊
机の上に備えておきたい良書の一冊です
幅広い内容

