目指せ!iPhoneアプリ開発エキスパート
第4回 初めてのプログラミング
今回からいよいよプログラミングを行います。最初のプログラミングはInterface Builder上で行います。
前回のおさらい
第3回では,Interface Builderを使った画面の作り方を学びました。実際に画面(View)に配置したパーツを再確認してみましょう。
- ユーザに何らかの文字を入力させるための「テキストフィールド」
- ユーザにいくつかの選択肢の中からひとつを選ばせるための「セグメンテッドコントロール」
- 画面上に文字を表示するための「ラベル」
これらのパーツを配置しただけの状態では,アプリは何の役にも立ちません。そこでいよいよ「役に立つアプリ」にするために,プログラミングの作業へと入っていきます。
操作と処理を確認する
まず,ユーザがパーツに対してどのような操作を行うかと,プログラムにどのような処理(動作)をさせるかについて確認しておきましょう。
このアプリでは,ユーザが入力した金額と選択した割引率から,割引後の金額を表示するという機能を実現します。ユーザーが行う操作は,次の2つです。
- 金額を入力する
- 割引率を選択(変更)する
そして,これらをもとにプログラムが行う処理は
- 割引後の金額を計算して表示する
となります。
プログラムを動かすためには,何らかの操作が必要です。プログラムは,あらかじめ決められた処理を忠実にこなすことしかできません。そこで,プログラムが処理を行うきっかけを,ユーザが行う操作の中から決めておく必要があります。組み合わせは複数あっても構いませんが,とりあえずここでは「割引率を選択(変更)する」というきっかけで「割引後の金額を計算して表示する」という動作の組み合わせにしておきます。
アウトレットとアクション
パーツとそれぞれの役割,さらにプログラムの処理が決まったら,実際にプログラミングをしていきます。その前に,2つの新しい言葉を覚えておいてください。
アウトレット
アウトレットは,画面上のパーツから情報を取り出したり,パーツに情報を与えたりするために必要なものです。ここで言うアウトレットは,英語のOutletを辞書で引くと出てくる「コンセント」の意味です。画面上に配置したパーツからは,コンセントにさしこむための線をのばすことができます。そこで,プログラムにコンセントの穴を設置して,そこにパーツの線を差し込むことによって,プログラムとパーツとの間で情報をやりとりできるようになります。
アクション
アクションは,プログラムの処理のことです。アクションに書かれた内容に従って処理を行うのはプログラムですが,その処理を開始するためのなんらかのきっかけが必要です。「このボタンが押されたらこの処理をする」や「ここに文字が入力されたらこの処理をする」というように,プログラムの処理とそのきっかけをセットで考えておく必要があります。
-
突然、説明通りに機能するようになりました。
前回はプログラムを入力して保存したあとに「ビルドと実行」をクリックし iPhone シミュレータを起動するところまでできましたが、何をしてもラベルは 123456789 のままだったので正直ショックでしたが、今回もまた最初からやり直して案の定、同じ結果になり色々調べたら、ラベルのパーツ自体の設定の説明が省略されていることに気付きました。View上に配置したラベルを選択した状態でインスペクタを表示して下の部分にある User Interaction Enabled にチェックを入れてから保存してからだと、正常に機能するようになりました。そのあと何故かチェックを外してから保存しても機能します。まだ iPhone SDK にバグがあるのかもしれません。
Commented : #9 ponta (2010/03/17, 06:58)
-
大失敗に終わりました(笑)
Mac OS X 10.6.2 で iPhone SDK 3.1.3 を使用しました。
説明で使用されているバージョンが異なるなので、操作方法が異なる箇所もありましたが、皆さんのコメントのおかげで「アクションを書く」まで出来ました。 しかし、以下のプログラムを記述したあとに「ビルドと実行」をクリックして iPhone シミュレーターを起動しますが、そこに数字を入力して数値を選択しても、ずっとラベルは 123456789 のままでした。そのままプログラムをコピー&ペーストして再度試しましたが結果は変わらず、原因不明です。 やっぱり難しいものですね...。Commented : #8 ponta (2010/03/15, 05:35)
-
Re:Classの関連づけに関して
eiyo様
教えていただいた方法で、OutletとActionを追加することが出来ました。
SDKのバージョンで仕様が変わっていたのですね。
いろいろな参考書ではコードを記述してから関連づける手法だったのですが、この連載の手法の方が分かりやすかったので。
大変助かりました。ありがとうございました。Commented : #7 VJI (2009/10/06, 21:52)
-
Classの関連づけに関して
もう解決したと思うけど…自分も困ったので。
記事のSDKは現在の最新よりも古いのだと思います。
InterfaceBuilderのインスペクターウィンドウではなくて、LibraryウィンドウにClassタブ的ボタンがあります。
そこのリストから”プロジェクト名+VewController”を選択。
下段のOutletsタブ的ボタンから、”+”でアウトレットを追加。
Actionも同様。
あとはオブジェクトがあるウィンドウのFile's Ownerに関連付けさせればOK。
説明端折ったところは記事通りで大丈夫だと思います。Commented : #6 eiyo (2009/10/04, 00:45)
-
インスペクタのIdentityタブ
Mac OS X 10.6でXCode3.2とiPhoneSDK3.1を使用しています。
インスペクタのIdentityタブ中に「Class Outlets」も「Class Actions」の項目もありません。
表示項目の設定メニューなどがあるのでしょうか?Commented : #5 VJI (2009/09/18, 08:59)


