プログラマでありたい

おっさんになっても、プログラマでありつづけたい

Interface Builderを使わずにiPhone,iPadアプリを作る方法

 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;


7.アプリの起動
 おめでとうございます。


 ちなみにiPhoneプログラミングUIKit詳解リファレンスですが、非常に解り易いのです。これからiPhone,iPadの開発を始めるという方には、お勧めの1冊です。


iPhoneプログラミングUIKit詳解リファレンス
所 友太
リックテレコム
売り上げランキング: 1617
おすすめ度の平均: 4.5
4 長く使える一冊
5 机の上に備えておきたい良書の一冊です
5 幅広い内容