質問

IBAおよびIBOutletをiPhoneのObjective-Cコーディングで使用する目的は何ですか?使用しない場合、違いはありますか?

役に立ちましたか?

解決

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

IBAction void に解決され、 IBOutlet は何にも解決されませんが、これらはこれらの変数とメソッドを使用できることをXcodeとInterface Builderに示しますインターフェイスビルダーでUI要素をコードにリンクします。

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

他のヒント

Interface Builderに表示され、接続をドラッグできるようにメソッドにフラグを付ける従来の方法は、メソッドがIBAction型を返すようにすることでした。ただし、代わりにメソッドを無効にし(IBActionが無効になる#define'd)、(id)引数を指定しても、メソッドは表示されます。これにより、柔軟性がさらに向上します

これらの3つはすべてInterface Builderから表示できます:

-(void) someMethod1:(id) sender; 
-(IBAction) someMethod2; 
-(IBAction) someMethod3:(id) sender;

詳細については、AppleのInterface Builderユーザーガイド、特に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を参照してください。

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

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

 nibファイルのロード方法、iOS6のマットのオンラインブックのスクリーンショット

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

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

IBOutlet

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

IBAction

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

@-動的パターン IB-インターフェースビルダー

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top