web-dev-qa-db-ja.com

IBOutletおよびIBAction

IPhone用のObjective-CコーディングでIBActionとIBOutletを使用する目的は何ですか。使用しない場合、違いはありますか?

155
suse

IBActionおよびIBOutletは、Interface Builderで参照できる変数およびメソッドを示すために定義されたマクロです。

IBActionvoidに解決され、IBOutletは何にも解決されませんが、これらの変数とメソッドをInterface Builderで使用してUI要素をコードにリンクできることをXcode and Interface Builderに示します。

Interface Builderをまったく使用しない場合、コードでそれらを使用する必要はありませんが、使用する場合は、IBおよびIBActionで使用されるメソッドにIBOutletを指定する必要があります。 IBで使用されるオブジェクト用。

203
Jasarien

メソッドにフラグを付けて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というタイトルのセクションを参照してください。

38
Michael Rogers

GUIコンポーネントにインターフェイスビルダー(したがってIBプレフィックス)を使用している場合は、IBOutletとIBActionを使用する必要があります。 IBOutletは、アプリケーションのプロパティをIBのコンポーネントに関連付けるために必要です。IBActionは、メソッドをIBのアクションに関連付けるために使用されます。

たとえば、IBでボタンとラベルを定義するとします。ボタンを押してラベルの値を動的に変更するには、アプリで次のようなアクションとプロパティを定義します。

UILabel IBOutlet *myLabel;
-(IBAction) pushme;

次に、IBでmyLabelをラベルに接続し、pushmeメソッドをボタンに接続します。これらの接続がIBに存在するには、IBActionとIBOutletが必要です。

32
ennuikiller

Interface Builderは、これらを使用して、ウィンドウ/ビューで使用しているインターフェイスコントロールに「関連付ける」ことができるメンバーとメッセージを決定します。

IBOutletとIBActionは、設計時にコードを解析するときにInterface Builderが検索するマーカーとして純粋に存在し、コンパイラによって生成されたコードには影響しません。

6
KazR

アウトレットは、コードから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 を参照してください。

4
पवन

キーと値のコーディングを見ながら図を見て、それが誰かを助けるかもしれないと思った。 IBOutletとは何かを理解するのに役立ちます。

フローを見ると、IBOutletsは、プロパティ名とNibファイル内のコントロール名を一致させるためだけにあることがわかります。

How nib file is loaded, screenshot of Matt's online book for iOS6

4
NSCoder

IBActionおよびIBOutletsは、Interface Builderで作成したインターフェイスをコントローラーに接続するために使用されます。 Interface Builderを使用せず、コードで完全にインターフェイスを構築する場合、それらを使用せずにプログラムを作成できます。しかし実際には、ほとんどの場合、Interface Builderを使用しています。インターフェイスで双方向性を取得するには、IBActionsとIBoutletsを使用する必要があります。

3

interface Builderを使用する場合、Connections Inspectorを使用して、イベントハンドラーでイベントを設定できます。イベントハンドラーは、IBAction修飾子を持つ関数であると想定されています。ビューは、同じタイプの参照およびIBOutlet修飾子とリンクできます。

1
Zephyr

IBOutlet

  • プロパティです。
  • Nib(IB)ファイルがロードされると、インスタンス変数に接続するカプセル化されたデータの一部になります。
  • 各接続はアーカイブされず、再確立されます。

IBAction

  • 属性は、メソッドがInterface Builderのストーリーボードから接続できるアクションであることを示します。

@-動的パターンIB-Interface Builder

0
Vinoth Anandan