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



