IPhone用のObjective-CコーディングでIBActionとIBOutletを使用する目的は何ですか。使用しない場合、違いはありますか?
IBAction
およびIBOutlet
は、Interface Builderで参照できる変数およびメソッドを示すために定義されたマクロです。
IBAction
はvoid
に解決され、IBOutlet
は何にも解決されませんが、これらの変数とメソッドをInterface Builderで使用してUI要素をコードにリンクできることをXcode and Interface Builderに示します。
Interface Builderをまったく使用しない場合、コードでそれらを使用する必要はありませんが、使用する場合は、IBおよびIBAction
で使用されるメソッドにIBOutlet
を指定する必要があります。 IBで使用されるオブジェクト用。
メソッドにフラグを付けてInterface Builderに表示され、接続をドラッグできるようにする従来の方法は、メソッドがIBAction型を返すようにすることでした。ただし、代わりにメソッドを無効にし(IBActionが無効になる#define'd)、(id)引数を指定しても、メソッドは表示されます。これにより、さらなる柔軟性が得られます。
これら3つはすべて、Interface Builderから見ることができます。
-(void) someMethod1:(id) sender;
-(IBAction) someMethod2;
-(IBAction) someMethod3:(id) sender;
詳細については、AppleのInterface Builder User Guide、特にXcode Integrationというタイトルのセクションを参照してください。
GUIコンポーネントにインターフェイスビルダー(したがってIBプレフィックス)を使用している場合は、IBOutletとIBActionを使用する必要があります。 IBOutletは、アプリケーションのプロパティをIBのコンポーネントに関連付けるために必要です。IBActionは、メソッドをIBのアクションに関連付けるために使用されます。
たとえば、IBでボタンとラベルを定義するとします。ボタンを押してラベルの値を動的に変更するには、アプリで次のようなアクションとプロパティを定義します。
UILabel IBOutlet *myLabel;
-(IBAction) pushme;
次に、IBでmyLabelをラベルに接続し、pushmeメソッドをボタンに接続します。これらの接続がIBに存在するには、IBActionとIBOutletが必要です。
Interface Builderは、これらを使用して、ウィンドウ/ビューで使用しているインターフェイスコントロールに「関連付ける」ことができるメンバーとメッセージを決定します。
IBOutletとIBActionは、設計時にコードを解析するときにInterface Builderが検索するマーカーとして純粋に存在し、コンパイラによって生成されたコードには影響しません。
アウトレットは、コードからUIへのリンクです。 UI要素を表示または非表示にする場合、テキストフィールドのテキストを取得する場合、または要素(または他の何百もの)を有効または無効にする場合は、ソースでそのオブジェクトのアウトレットを定義し、そのアウトレットをリンクする必要があります「インターフェースオブジェクト」を介してUI要素に接続します。その後、コーディングの他の変数と同じようにアウトレットを使用できます。
IBAction –ユーザーインターフェイスオブジェクトによってトリガーされる特別なメソッド。 Interface Builderはそれらを認識します。
@interface Controller
{
IBOutlet id textField; // links to TextField UI object
}
- (IBAction)doAction:(id)sender; // e.g. called when button pushed
詳細については、 Apple Docs を参照してください。
IBActionおよびIBOutletsは、Interface Builderで作成したインターフェイスをコントローラーに接続するために使用されます。 Interface Builderを使用せず、コードで完全にインターフェイスを構築する場合、それらを使用せずにプログラムを作成できます。しかし実際には、ほとんどの場合、Interface Builderを使用しています。インターフェイスで双方向性を取得するには、IBActionsとIBoutletsを使用する必要があります。
interface Builderを使用する場合、Connections Inspectorを使用して、イベントハンドラーでイベントを設定できます。イベントハンドラーは、IBAction修飾子を持つ関数であると想定されています。ビューは、同じタイプの参照およびIBOutlet修飾子とリンクできます。
IBOutlet
IBAction
@-動的パターンIB-Interface Builder