objective-cの基本がちょっと理解できたところで、
今日からクイズアプリの作成をしてみたいと思います。
このクイズアプリは、
スタート画面があって、スタートボタンを押すと、
あらかじめ用意したクイズが表示され、
4択の中から回答を選択すると、はずれかあたりかが判断され、
次の問題に進むというものです。
まずは、X-codeから新規プロジェクトを作成します。
そして、View-based Applicationを選択。
Productはiphoneを選択します。
名前はQuizにしました。
最初はスタート画面になるところを作りたいと思います。
QuizViewController.hを開いて、以下のコードを書きます。
---------
@class Quiz;
@interface QuizViewController : UIViewController {
Quiz *_quiz;
}
-(IBAction)startQuiz:(id)sender;
@end
-----------
はじめからちょっと難易度が高いですが、一行づつ見ていきます。
@class Quiz;
使用するクラスの宣言をします。
これは、スタートボタンを押した後、クイズが開始されるページを作るために、
Quizクラスを作ろうと思います。
@interface QuizViewController : UIViewController {
これは、
@interface クラス名:スーパークラス名<プロトコル>ということでした。
つまり、UIViewController というスーパークラスを持った、
QuizViewControllerクラスのインターフェースを使うよーということですかね。
Quiz *_quiz;
これは、「*」(アスタリスク)がついているので、
クラスオブジェクト型の変数を指定するときにアスタリスクがついたので、
Quizはクラスオブジェクト型のクラスで、*_quizはその変数ってことですかね。
でもなんで「_」(アンダーバー)がついているのか謎です。
調べてみると、
インスタンス変数にアンダースコアを付けることで、
ローカル変数と見分けやすくするという手法があるらしく、どうやらそれらしい。
ここにすごく詳しく書いてありました。
-(IBAction)startQuiz:(id)sender;
これは確か- (IBAction) XXXX(メソッド名): (id) sender;
っていうことで、アクションを設定するやつです。
今日は、クイズアプリということで、
スタートページには、クイズを始めるためのスタートボタンを付けるわけですが、
そのスタートボタンを押したときにどんなアクションをさせるのかを設定するために、
アクションに名前を付けています。
なんと便利なことに、Objective-cの型は「id」だったらどんな型でも使えます!
なので、(id)senderは、
タッチされた部分の情報を送る引数ってことですね。
もう一回ソースを見てみます。
----------
@class Quiz;
@interface QuizViewController : UIViewController {
Quiz *_quiz;
}
-(IBAction)startQuiz:(id)sender;
@end
-----------
はい、何となく理解できたような気がします。
0 件のコメント:
コメントを投稿