iPhoneアプリの開発をやってみよう!と思ってSDKダウンロードして、iPhoneSDKプログラミングガイド買って、iPhoneも手に入れたのでそろそろやるかとパタパタやり始めました。
objective-cはなんだかちょっとまだ慣れないですし、とりあえずハローワールドから行くかと思いプログラミングガイドを見てみました。パラパラリ。えーと、「ボタンを押して背景を変更する。」と。ふむ。じゃあやってみようかと思ったら肝心のコードが書いてない。コントロールボタンの配置とか、ボタンのイベントバインドみたいな事は書いてあるのに、コードがない。ヘッダの記述だけ。↓こんなの。
#import <UIKit/UIKit.h>
@interface HelloView : UIView
{
UILabel* label;
}
@property ( retain ) IBOutlet UILabel* label;
- ( IBAction ) doOrange : ( id ) sender;
- ( IBAction ) doYellow : ( id ) sender;
@end
doOrangeとdoYellowというメソッドがあって、labelというプロパティがあると。
ガイドを読んでると「ボタンが押されたらdoOrangeが動くので、背景をオレンジに変えてlabelになんか書け。」というのはわかるんだけど、そのコードが無いもんだから困った。で、とりあえず、labelがUILabelだというので、そこらへんからググってみる。
UILabelにはsetTextというメソッドがあって、コレを使えば表示されるテキストを変更する事が出来そう。書き方は
[label setText:@"tap Orange!!"];
こんな感じ。
じゃあ早速実行してみようと「ビルドして進行」→ボタンをクリック→コケた。
ざっと見ると、たぶんlabelがアロケートされてないからじゃないかと思った。ので、このlabelをHelloViewのinitWithFrameで初期化してあげる。
self.label = [UILabel alloc];
こうしてあげれば使えるようになるので、setTextでラベルの表示テキストを変更してあげられる。
で、次。UIViewの背景を変える。
// Creating a UIColor with Preset Component Values self.backgroundColor = [UIColor orangeColor];
とやる。今回は色をUIColorというクラスで使ってみました。このUIColorをどうやってオレンジ色や黄色でイニシャライズするのかなーと調べてみると、xcodeのプロジェクト→クラスブラウザのUIColorに色を生成して返すクラスメソッドが書いてあった。以下に一覧。
+ blackColor + darkGrayColor + lightGrayColor + whiteColor + grayColor + redColor + greenColor + blueColor + cyanColor + yellowColor + magentaColor + orangeColor + purpleColor + brownColor + clearColor
これらの色を返してくれる。のでここからorangeColorとyellowColorを使ってみた。
というわけで、ボタンを押したら背景が変わって、ラベルに文字が入ってちゃんと期待通りに動いてくれたのでiPhoneのアプリにハローワールドできた。
全部のコード
#import "HelloView.h"
@implementation HelloView
- ( id ) initWithFrame:( CGRect )frame{
if( self = [ super initWithFrame:frame ] ){
self.label = [UILabel alloc];
}
return self;
}
- ( void ) drawRect : (CGRect) rect {
//
}
- ( void ) dealloc {
[label dealloc ];
[ super dealloc ];
}
- ( IBAction ) doOrange : ( id ) sender {
self.backgroundColor = [UIColor orangeColor];
[label setText:@"tap Orange!!"];
printf("orange");
}
- ( IBAction ) doYellow : ( id ) sender {
self.backgroundColor = [UIColor yellowColor];
[label setText:@"tap Yellow!!"];
printf("yellow");
}
@synthesize label;
@end
