2012年5月13日日曜日

iphoneアプリ①

iphoneアプリの開発でもやってみようかと思い立った。

C言語の知識もないままに、ドキュメントを読み込んでみることとした。


作るものはテキストを入力してボタンを押すと
『Hello,入力文字列』
と表示するシンプルなもの。





■なんとなく分かったこと
・いくつかテンプレートがあるらしい。大体のアプリはテンプレートを元に作ってありそう。


・**.hにインタフェース部分、.mに実装部分を書く。
こんな方法もあるんだなぁ。これがプログラミング言語全般の中で一般的なのか特殊なのかは分からないね。


・パーツはUIから入れられますよ。ボタンなどのイベントも。
基本的なところはインタフェース側にドラッグドロップするだけでm側にメソッドなんかは出来るみたい。


・NS=NextStep時代からの接頭語だってさ。
割とどうでもいいけど気になる。


・デリゲート
テキストフィールドを画面(ViewController)とデリゲート接続する箇所がある。
要はパーツでの処理を他のパーツに引き継がせるって接続かな?
このアプリではテキストフィールドへの入力が完了した際に、キーボード消したいよね。という理由で、別のパーツ(テキストフィールド⇒画面全体)にフォーカスを変える。という操作で擬似的にキーボードを閉まってる。
キーボードを消す操作はそもそもできない仕様らしいから、このやり方は今後も使いそう。

デリゲートの接続は他のパーツ同様GUIでつなげる。
で、UITextFieldDelegateプロトコルでは、入力完了したときにtextFieldShouldReturn:メソッドというものが含まれているので、これを自分で実装する必要がある。

内容自体は下記の様な感じ。
resignFirstResponderでデリゲート先にフォーカスを当てる。
if(theTextField == self.textfield)はテキストフィールドが複数ある場合を想定してる場合。
キーボードを消す目的以外にも次のテキストフィールドに渡すとかいう使い方も出来そう。
しかし、このプロトコルにはこういうメソッドが含まれてるから実装するでしょ。というのはしっくりこないけど、そこは慣れですかね。
- (BOOL)textFieldShouldReturn:(UITextField *)theTextField {
    if(theTextField == self.textfield){
        [theTextField resignFirstResponder];
    }
    return YES;
}

下記はこのチュートリアルというか、C言語を知らなすぎてるから、自分が調べただけ。

・インタフェース
@interface クラス名:スーパークラス名
{
インスタンス変数の宣言;
}
メソッドの宣言;
@end

・メソッド
宣言
- (返り値の方)メソッド名:(引数1の型)仮引数1 キーワード:(引数2の型)仮引数2;
呼び出し
[インスタンス名 メソッド名:引数1 キーワード:引数2]

次は二つめのiOSアプリケーション ストーリーボードを読む。







0 件のコメント:

コメントを投稿