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;
}

以下実行してボタンを押したらこうなりました。

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!が表示されました。めでたしめでたし。

新しい環境に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

思った通りに表示できるようになりました。めでたしめでたし。

本日知った事

AquaSKKでことばを登録するとき、^yでペーストした文字も登録できるということ。普通にペーストすると、登録が終了していて困っていたので、これで楽になった。


BL,TLとあって、BLはBoys Loveの略なのは知っていたけれど、TLがTeens Loveの略とは知らなかった。Teens Loveとはよーするにレディースコミックの思春期バージョンでよろしいかなと。

iPhoneのアプリ消しまくり

更新かけると、もはや使ってないアプリまでもがバージョンアップしろと言われるのがうっとおしくてiTunesにて、アプリをこれでもかってぐらい消しまくり。なんかiOS5に更新してから消えてるものやリンクがおかしくなってるものもあったりしてまとめて消去。

そして同期。大変すっきりしたのであるが、朝iPhoneを見て驚愕。仕事用のメモアプリが消えてなくなっている…

ついでに消してしまったらしい…あほかあああああああああああああ

今度からはクラウドなりなんなりで他にもデータ保存されるやつにメモすることとしようと思った水曜の朝でありました。

Apogee Duet2 の正式なドライバが出た

重い腰を上げて、ここ数日ぼちぼちとクリーンインストールしたLion環境を構築しておりました。

それを見透かすかのようにApogeeがDuet2のドライバを数ヶ月ぶりにアップデートしやがりました。前のドライバはJulyですよJuly。何もこのタイミングで・・・

あほかああああと思いましたが、気を取り直してもとの環境で正式版になったドライバをインストール。あー環境これどうしようかなー、これを使い続けるの便利やわなー、でも一旦クリーンになった環境も捨てがたいなーと思っていると、意外と時間かかりながらもインストール終了。

はたして音は・・・鳴りませんでした・・・というわけで我が悩みは瞬時に解決クリーンインストールした環境を使い続けることと相成りましたとさ。めでたしめでたし?

Apogee Duet2のLionでの動作状況

うちではSnow Leopardでは問題なく動いていたが、Lionにアップグレードしたら音が出力されないという問題に直面していた。色々見まわっても日本語で情報は少なく、英語でもあまり無い模様。みなさんは普通に動いてるという報告が多かった。

http://www.apogeedigital.com/downloads.php
July Beta Driverとあるように、ドライバはまだ正式版では無い。まあいずれバージョンが上がってその時動くんじゃないのとほっておいてはや数カ月、すいませんもうOctoberでっせと。

しかたなくLionのinstall DVDを作り、USB HDDにLionをクリーンインストールしてみることに。DVD起動させよとうCキー押しながら起動するも何度やってもスルーされる。仕方ないのでoption押しながら起動で代用する。
DVDからの起動のあまりの遅さにびっくりしながら(固まってるのかと思った)、マウスが使えない(これまた固まってるのかと)のでキーボードで操作するのにも、Macなのに・・・と思いながらもなんとかクリーンインストール終了。

さすれば普通に音なりますがな、Duet2 on Lion。うーん環境再構築するかなー。以前からいろんなもの入れてちょっと分けわからなくなっていたので、好機には違いないんだけど、さすがに手間がかかるなと。ぼちぼちやるかー。