2011-11-27
Xcode4.2を使っての、Hello World(storyboard?Interface Builderを使わない版)
InterfaceBuilderのあまりの出来に、IB死ね死ね教団に入られた方に作ってもらったものです。
先日のと同じですが、resetボタンを増やしてみました。
コメントは私が付けたものです。あくまでも初心者の私の理解であって正しいことは保証されておりません。
#import <UIKit/UIKit.h> @interface ViewController : UIViewController { UILabel *label1; NSString* _text; } @end
ViewController.hに2行追加。
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. //labelにはっつけるdefaultのテキスト _text = @"ここに表示"; //label1のメモリを確保して、出現位置を指定して初期化 label1 = [[UILabel alloc] initWithFrame:CGRectMake(120, 10, 300, 40)]; //label1のテキストを設定 [label1 setText:_text]; //label1というUIViewをはっつけて、表示 [[self view] addSubview:label1]; //button1というボタンの形を指定。四角(Rect)で周りが丸いの(Rounded) UIButton* button1 = [UIButton buttonWithType:UIButtonTypeRoundedRect]; //button1の場所を指定 button1.frame = CGRectMake(80, 230, 80, 40); //button1に載せるテキストを指定。button1が通常時(UIControlStateNormal)を指定 [button1 setTitle:@"押してね" forState:UIControlStateNormal]; //ボタンが押された時の処理。ボタンが押して放されたら(TouchUpInside)、pushを呼べ。 [button1 addTarget:self action:@selector(push:) forControlEvents:UIControlEventTouchUpInside]; // UIButton* button2 = [UIButton buttonWithType:UIButtonTypeRoundedRect]; button2.frame = CGRectMake(170, 230, 80, 40); [button2 setTitle:@"reset" forState:UIControlStateNormal]; //button2が押されたらresetを呼べ [button2 addTarget:self action:@selector(reset:) forControlEvents:UIControlEventTouchUpInside]; //二つのボタンというUIViewをはる [[self view] addSubview:button1]; [[self view] addSubview:button2]; }
ViewController.mの- (void) viewDidLoad部分に上記のように追加。
またその下あたりにでもボタンを押したときの関数を追加
- push:(id)sender { //呼ばれたらlabel1のテキストをHello Worldにしてしまおう。 [label1 setText:@"Hello World!"]; return self; } - reset:(id)sender { //呼ばれたらlabel1のテキストをdefaultにしてしまおう。 [label1 setText:_text]; return self; }
2011-11-26
Xcode4.2を使っての、Hello World
目標
ButtonとLabelを配置して、Buttonを押したら、LableにHello World!と表示する
作成開始

Xcodeを起動、New Project -> Single View Applicationを選択
Product Nameに今回はHelloWorldと名付けます(適当です)、Company Identifierも適当に入れて下さい。そして保存先を選んでProjectを作成します
Buttonなどの配置

MainStoryboard.storyboardを選択し、ボタンなどを配置します。
右下の所で 立方体の小さいボタン(Show the Object libraryとツールチップがでます) を押し、LabelとRound Rect Buttonをドラッグして下さい。そしてそれぞれを選択してからダブルクリックすると、テキストが変えられるので、適当に変更して下さい。今回は押してねなどと変更しました。
画面が狭くなるのでNavigator Windowを隠します
Buttonなどとプログラムとの接続

Assistant Editorを表示させます。そして左側の画面のLabelをコントロールキーを押しながら隣りのWindowまでドラッグ。@endの上の行あたりで離します。すると小さいWindowが開きます。ここではLabel自身の名前を付け、プログラムからアクセスするために関連付けを行なっています。
ここではmessageLabelという長い名前を付けてみました。そしてconnectボタンを押します。
@property (weak, nonatomic) IBOutlet UILabel *messageLabel;
なんてのが追加されます。
次にButtonの処理です。同じくButtonをコントロールキーを押しながら、@endまでドラッグ。名前はpushButtonと付けてみました。
今回は名前だけでなく、一番上のConnectionの所をOutletからActionに変更します。
Buttonを押したら何々するという動作を登録したいためです。そしてconnectボタンを押すと
- (IBAction)pushButton:(id)sender;
というのが追加されます。
Buttonを押したときの処理を書く

Navigator Windowを表示させます。ViewController.mをクリックし、ボタンを押した時の動作を編集します。
- (IBAction)pushButton:(id)sender {
}
というものが最後にありますので、ここの真ん中に
- (IBAction)pushButton:(id)sender {
[messageLabel setText:@"Hello World!"];
}
一行追加して下さい。ボタンが押されたらこの内容が実行されます。ラベルのテキストにHello World!を設定せよという内容です。
実行

あとは左上のRunボタンを押すとiOSシミュレーターが立ちあがり、ここでボタンを押すと
Hello World!が表示されました。めでたしめでたし。
2011-10-29
新しい環境にrspec2を入れたらspec.optsファイルを読んでくれない
$ rspec . Finished in 0.35526 seconds 1 example, 0 failures
ありゃ、spec.optsに-fsと-c書いてるよな、と調べていったら
https://github.com/rspec/rspec/wiki/autotest
こちらのサイトに.rspecにオプション書けとありました。ありゃ前からこうだったのか。久しぶりにさわるといかんね。
$ vi .rspec -fs -c
テストするもののトップディレクトリに.rspecを作成して、オプションを書き込み
$ rspec MessageFilter should detect NG word Finished in 0.36565 seconds 1 example, 0 failures
思った通りに表示できるようになりました。めでたしめでたし。

