カスタム検索

2008年12月27日土曜日

iPhoneで動かすHelloWorld その3

Viewに物をおいてみましょう!

ControllerView.xib をインターフェースビルダーで起動して、LibraryからTextField と Label と Round Rect Button を配置します。
↓こんな感じです。



各Objectの設定はInspectorパネルから色々操作出来ます。
TextのInspectorを見ると、TextInputTraitsという項目があって、ここでキーボードの形や、決定ボタンの形などが調整出来ます。

ここでシミュレーターで実行してみると、キーボードは開きますが、消す事が出来ない状態です。
これはキーボードの終了イベントを受け取る場所がないのでキーボードが閉じられないというわけです。

このイベントをMyViewControllerと関連付けします。
関連付けはアウトレットというインスタンス変数によって行われます。

MyViewController.h
  1. #import <uikit uikit.h="">  
  2.   
  3. //MyViewControllerはテキストフィールドのデリゲートになるため、UITextFieldDelegateプロトコルを採用する必要があります。  
  4. //プロトコルの指定はクラスの継承元クラスの後に <> で指定します。  
  5. @interface MyViewController : UIViewController<uitextfielddelegate> {  
  6.   
  7.  //IBOutletは、続く宣言をアウトレットとして使う。という指示です。  
  8.  IBOutlet UITextField *textField;  
  9.  IBOutlet UILabel *label;  
  10.  NSString *string;  
  11. }  
  12.   
  13. //@propertyでgetter,setterをproperty定義します。  
  14. @property (nonatomic, retain) UITextField *textField;  
  15. @property (nonatomic, retain) UILabel *label;  
  16. @property (nonatomic, copy) NSString *string;  
  17.   
  18. //Helloボタンを処理するchangeGreetingメソッドを定義します。  
  19. //IBActionは、続く宣言をターゲット/アクション接続のアクションとして扱う。という指示です。  
  20. -(IBAction)changeGreeting:(id)sender;  
  21.   
  22. @end  
  23. </uitextfielddelegate></uikit>  


実装クラスへメソッドの中身を定義します。

MyViewController.m
  1. - (IBAction)changeGreeting:(id)sender {  
  2.   printf("call!");  
  3. }  


保存してインターフェースビルダーへ戻り、File's OwnerのIdentity Inspectorをみると、
Class ActionとClass OutletsにchangeGreetingとlabel,textFieldが追加されています。
これはMyViewControllerクラスがControllerViewのビュークラスとして指定されている為です。

インターフェース上に設置されたオブジェクトとフィールドを関連付けます。
File's Ownerを右クリックして出てきたリストから○をドラッグして、関連付けたいオブジェクトへドロップします。

ボタンのアクションをファンクションへ関連付けます。
ボタンをCTRL+クリックで出てくるInspectorの中からTouch Up Insideの○をFile's Ownerへドラッグ&ドロップします。
changeGreetingが表示されるのでそれを選択する事で関連付けが行われます。

テキストフィールドのデリゲートを設定します。
テキストフォールドをCTRL+ドラッグでFile's Ownerへドロップします。
選択肢からDelegateを選ぶ事でデリゲートの設定が行われます。

ここまで設定したら一度実行してみます。
ボタンを押してコンソールにcall!が表示されたら連携がうまくいっています!
次は実際に処理を書いていきます。(まだまだキーボードは戻せません :p)

0 件のコメント: