iPhoneプログラミングガイドみながらハロワ

iPhoneプログラミングガイドみながらハロワをはてなブックマークに追加 iPhoneプログラミングガイドみながらハロワをdel.icio.usに追加 Yahoo!ブックマークに登録 iPhoneプログラミングガイドみながらハロワをGoogle Bookmarksに追加 iPhoneプログラミングガイドみながらハロワをtwitterにポスト
iphonedevs.png

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

コメントをどうぞ