ASOCでアプリケーションを作ってみる-03-Xcode3.2
前回ですばらしいアプリケーションはできたも同然ですが、何の機能もないと淋しいので機能を作ってみましょう。
コードを作成する
インターフェースは出来上がりましたが、まだボタンを押しても何も起こりません。それはボタンを押した時に何をするかのプログラムを作っていないからです。
まずはボタンが押されたら実行されるハンドラを作ってみます。
ハンドラを作成する
先ずはボタンを押したら呼び出されるハンドラのコードを作成しましょう。
Xcodeのプロジェクトウィンドウの左側にあるClassの中に在る『MyTestAppDelegate.applescript』をダブルクリックしてコードの編集用のウィンドウを開きます。開いたウィンドウで以下のコードを書き込みます。
on clickButton_(sender)
log "ボタンがクリックされましたの1"
end clickButton_
on clickButton(sender)
log "ボタンがクリックされましたの2"
end clickButton
注意が必要なのは2つのハンドラの違いは、ハンドラ名称と変数指定の()の前にアンダースコア(_)が入っているか入っていないかという事です。2つめを加えているのは、これは入っていないとまずいよ、を後で見比べる為です。
コードを書き込んだ状態は以下のようになります
コードを保存して、今作ったハンドラとボタンを結びつける為にinterface Builderに戻ります。
ハンドラとボタンを接続する
インスペクターパネルのConnectionsタブ
interface Builderのドキュメントウィンドウで『MyTestAppDelegate』をクリックしインスペクターパネルのConnectionsタブを表示すると左のような表示になります。
最初からあった2つのハンドルの他に、赤い部分に『clickButton』と表示しているのが先ほど書き加えたハンドルです。ここに表意されるハンドラはアクションハンドラとしてオブジェクトに結びつけ、オブジェクトのアクションイベントに応じて機能させられるものになります。しかし2つ作ったにもかかわらず1つしか表示されていません。結論から言ってしまうとハンドラ名称の最後にアンダースコアが無いハンドルはここに表示されないことになってしまいます。ここに表示されないハンドルはアクションハンドラとはなり得ないということです。
ではアクションハンドラとボタンを接続してみましょう。
アクションハンドラとボタンを結びつける
左の図のようにインスペクターパネルのConnectionsタブの『clickButton』の右は時の丸印からクリックドラッグするとラバーバンドが伸びますのでそのままボタンまでドラッグし、ボタンがハイライトされたらマウスを放します。
うまく行くと左のように接続を示した表示になります。もしも間違ったものと接続されてしまった場合は青丸の部分の×をクリックする事で接続を解除することができます。
もう一つの方法はConnectionsタブのダイアローグを開いて(なんと呼ぶのか分かりませんので取りあえずコネクションダイアローグと呼びます)接続する方法です。
コントロールキーを押しながらドキュメントウィンドウの『MyTestAppDelegate』をクリックすると左のようなダイアローグが表示されます。ここで上と同じように接続する事ができます。
左の図は接続後の『MyTestAppDelegate』と『実行ボタン』のコネクションダイアローグの表示内容です。
いろいろなもののダイアローグが表示しておけるので私はこちらを使用する事が多いです。
ではこれで保存して、ちゃんとボタンをクリックするとハンドラが呼び出される事、どちらのハンドラを呼び出しているかを確認する為に、Xcodeにもどって『ビルドと実行』をクリックし、実行された『MyTest』のボタンをクリックしてみてください。
ログを確認すると、『ボタンがクリックされましたの1』が書き出されているかと思います。つまり表示は『clickButton』になっていますがちゃんと認識されていたのは『clickButton_』のほうであったということです。
ASOCでアプリケーションを作ってみる-02-Xcode3.2 |
AppleScriptObjC |
ASOCでアプリケーションを作ってみる-04-Xcode3.2 |