歯医者に通い続けて半年 まだ、続きます。。。てか、調子よくない(T_T)
■InterfaceBuilderのバインディング(Outlets) InterfaceBuilder(IB)で、File's OwnerとOutletsを何気なくバインドしてたけど、 本質的にわかってなかったのでメモ。
・File's Owner → UIオブジェクト(UIView)のバインディング X-CodeがUIViewを参照するための作業 ・UIオブジェクト(UIView) → File's Ownerのバインディング UIViewのイベントをX-Codeに関連づけるための作業
File's OwnerはUIViewControllerの実態そのもの。 つまり、UIViewControllerとUIViewのバインディング(Outlet)で、 MVCモデルの「VC」にあたる作業をしてるんだな?と言う事が整理できます。
Outletsは、接続群の総称を指すんですね。 同様にRecivedActionsは、イベントアクション群を指す。 ここら辺の用語は定義だから覚えるしかないんだけど(^^;)
どうやら、3.2でGUIが大きく変わったらしい。 雪豹のXcode3.2でClass Actions/Outletsを見失う
そう言えば前のバージョンでは、actionの設定が違ったような気がする。 自分は3.2で本格的にやり始めたから違和感はないけど。
(1) Tools > Library パネルを開く (2) Classesに切り替え、ViewControllerを選択する
ここにOutlets、Actionsが定義されているが、場所がわかりにくすぎるw
X-codeをノンコーディングで作成する場合は、 (1) LibraryパネルでOutletやActionを定義する (2) File's Ownerを選択する (3) File > Write Class Files...で、X-CodeViewControllerのソースマージする
が、この手法だと思わぬソース書き換えのトラブルがあるので、あまりやらない方がいいかも知れない。
TextFieldにフォーカスされると自動的にキーボードが表示されるが、 キーボードの入力後(Did End on Exitイベント)やViewをタッチした時に、 キーボードを閉じるメソッドは「resignFirstResponder」を利用する。
-(IBAction)backgroundTap:(id)sender {
[nameField resignFirstResponder];
[numberField resignFirstResponder];
}
ただし、Viewにはタッチイベントがないため、IB上でクラスをUIView→UIControlに変更してやる。 UIControlはUIViewを継承しており、タッチイベントを持っている。 そのままと言えば、そのままだ。
てか、だんだんObjective-Cに慣れてきたような気がする(!?) ・・・が、まだ基礎本の段階で100/500ページです(-_-;)