【Objective-C】XcodeでiPhoneアプリを作る基礎を学ぶ4【『初めてのiOSアプリケーション』その2】

Xcode


さて、初心者の心を軽くへし折ってくれる『初めてのiOSアプリケーション』その2です。

View Controller上にあるテキストフィールド、ラベル、ボタンがデータをやりとりできるよう、View Controllerに関連づけていきます。

プログラムは何をしているか理解しようと思わず、とりあえずやってみて結果を見ていく方が使えるようになっていく気がする。

今回から一気に5段階くらい難易度が上がります。

理解できなくても、ふーんあっそ。くらいに思って進めてOK。

とりあえずやってみることが大事。


【Objective-C】XcodeでiPhoneアプリを作る基礎を学ぶ3【『初めてのiOSアプリケーション』その1】 | naonotes.com(ナオノーツ)


ViewController.hのコードを表示


ドキュメントを読んでもさっぱり訳がわからないけど、書いてあることをひたすらつづけていれば動くので、淡々とつづけていきます。

右上にあるAssistant Editorをクリック。


skitchw6XjoR



するとViewControllerの横にViewController.hのコードが表示される。


skitchXhpbkU



ボタンをView Controllerにアクション接続


View Controllerにボタンをアクション接続する。

ボタンをクリックし、Controlキーを押しながら@interface〜の下にドラッグアンドドロップする。


skitch0Mz023



すると、入力用ダイアログが現れる。


skitchjwWzWc



ConnectionをActionに変更し、Nameは『changeGreeting:』と入力。

Typeは初めからidになっているはずだが、もし違うならidに変更する。

ミスがないか確認したらConnectをクリック。


skitchAytOCI



@interface〜の下に、

– (IBAction)changeGreeting:(id)sender;

というコードが追加された。


skitchvdkKSt



このコードは、ボタンがタップされたときに『changeGreeting:』という処理(メソッド)を行う、という意味。

つまり、アクション接続とはボタンをタップしたりと何かしらユーザーがアクションを起こしたときに処理を行うという事。

しかし、changeGreeting:という処理内容はまだ記述していないため、今現在シミュレータでボタンをタップしても何もおこらない。

(id)senderは引数のことだが、詳しい意味は割愛。

別の機会にやります。



テキストフィールドをView Controllerにアウトレット接続


同じような方法でテキストフィールドもView Controllerにアウトレット接続する。

テキストフィールドをクリックし、Controlキーを押しながら- (IBAction)〜の下にドラッグアンドドロップする。


skitch6gecMM



ボタンと同じように入力用ダイアログが現れる。


skitchkJosb4



Nameに『textField』と入力し、Cnnectをクリック。

初めからConnectionはOutlet、TypeはUITextField、StorageはWeakになってるはずだが、違う場合は変更しよう。


skitchfJF9KX



– (IBAction)〜の下に、

@property (weak, nonatomic) IBOutlet UITextField *textField;

というコードが追加された。


skitchpSxLgS



ラベルをView Controllerにアウトレット接続


最後にラベルをView Controllerにアウトレット接続する。

テキストフィールドをクリックし、Controlキーを押しながら@property〜の下にドラッグアンドドロップする。


skitchig6rs9



Nameに『label』と入力し、Connectをクリック。


skitch1myqNu



@property (weak, nonatomic) IBOutlet UITextField *textField;の下に、

@property (weak, nonatomic) IBOutlet UILabel *label;

というコードが追加された。


skitchN9GoRi



アウトレット接続はアクション接続と逆。

今回の場合アクション接続は、ボタンを押したらメソッド(処理内容)である『changeGreeting:』に処理を行わせる、というものだが、アウトレット接続は『changeGreeting:』が実行した結果をプロパティ『label』が受け取る、というものになる。

プロパティ『label』が何を受け取るのかはまだメソッド(処理内容)である『changeGreeting:』に何も記述されていないため不明。


プロパティってなに?


プロパティとは、今回の場合、ViewController.h(ヘッダー)で管理する変数とそのデータ。

何が何だかわからないと思うので別のものに例えると、


家(ViewController.h)

お父さん「お母さんにプレゼントを買ってあげよう。Amazonで買おう。これにするか。」(アクション)


Amazon(ViewController.m)

Amazonがお父さんが購入した商品を段ボールに詰め、お母さん(プロパティ)宛にプレゼント(処理結果)を出荷。

(Amazonが行ったすべての行為全体がメソッド)


家(ViewController.h)

ヤマト「Amazonからお届け物でーす」(アウトレット)

お母さん(プロパティ)「まぁ!お父さんからのプレゼント(処理結果)!」


こんな感じのイメージ。

ちなみにお父さんは誰もプレゼントをくれないのでプロパティではない。

お父さんの宿命。


プロパティはヘッダーにて処理結果を保持する。



関連づけを確認する


View ControllerにボタンなどのUIが関連づけられたか確認する。

右上にあるStandard editerボタンをクリックする。


skitch5W4jXT



Organizerの下にあるメニューの一番右にあるConnections inspectorをクリックすると、関連づけが表示される。


skitch7POa7P



が、見てもイマイチ意味が解らないと思うが、気にしなくていい。

いずれ解るようになる・・・と思う。



デリゲート接続


シミュレータを起動してテキストフィールドをクリックするとキーボードが現れて文字を入力できるけども、キーボードのDoneをクリックしてもウンともスンとも言わない。

キーボードも閉じない。

いきなり詰む。


skitch5dJyg8



なぜなら、Doneをクリックしたらどういう処理を行うという事を何も記述していない。

そういうことまですべてこちら側で決めなければならない。

なので、Doneを押したらテキストフィールドに書かれている文字をどこかに渡して処理をしてもらう、ということを今回は行う。

デリゲートとは、日本語にすると委譲。

つまり、丸投げ

テキストフィールドに記述されたテキストをDoneをタップしたときに、どこぞに入力されたテキストをぶん投げるための設定を行う。

テキストフィールドをクリックし、controlキーを押しながら黄色い丸にドラッグアンドドロップする。


skitchMNnzIi



メニューウィンドウが現れるので、delegateをクリック。


skitchQVEH5a



これでとりあえずデリゲート接続は終了。

デリゲート先に何も記述はしてないので、今はシミュレータを起動してキーボードのDoneを押しても何も変わらない。

後日この処理を書いていきます。



一気に難易度がアップ


プロパティやメソッド、アクション接続、アウトレット接続、デリゲート接続と、専門用語を連発されて鼻白んだ人も多いと思う。

ワタシもです。

でも、この初めてのiOSアプリケーションは侮れない。

筆字でいう『永』とも言える。

Objective-Cでの基本的な事をすべてぶち込んである。

完全に理解しようとは思わなくていい。

とにかく作ってみることが大事。

次回は『changeGreeting:』が行う処理(メソッド)のコードを書き込んでいきます。


【Objective-C】XcodeでiPhoneアプリを作る基礎を学ぶ4【『初めてのiOSアプリケーション』その2】」への4件のフィードバック

  1. bavarotti1981

    こんばんは。
    だんだんと専門用語も出てきて、ゆっくり読み返ししようと思います(笑)
    プロパティの下り分かり易かったです。
    次回も楽しみにしています。
    時間がある時に初回から復習し直してみます

    返信
    1. 葛葉 キョウジ(管理人) 投稿作成者

      専門用語が山のようにあるんですけど大分削り取りましたw
      それでもやっぱり専門用語は出てきますね。

      返信
  2. kazuki

    ものすごく分かりやすかったです!
    いままで分からなくて、もやもやしてた頭がすっきりしました笑

    返信
    1. 葛葉 キョウジ(管理人) 投稿作成者

      ありがとうございますヽ(´ー`)ノ
      お役に立てて幸いです。

      返信

bavarotti1981 へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)