166

Xcode と Interface Builder で IBOutlets と IBActions を使用する目的は何ですか?

IBOutlets と IBActions を使用しなくても違いはありますか?


迅速:

@IBOutlet weak var textField: UITextField!

@IBAction func buttonPressed(_ sender: Any) { /* ... */ }

目的 C:

@property (nonatomic, weak) IBOutlet UITextField *textField;

- (IBAction)buttonPressed:(id)sender { /* ... */ }
4

11 に答える 11

215

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

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

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

于 2009-10-29T11:22:03.187 に答える
38

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

これら 3 つすべてが Interface Builder から表示されます。

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

詳細については、Apple の Interface Builder ユーザー ガイド、特に Xcode 統合というタイトルのセクションを参照してください。

于 2010-12-12T17:06:57.780 に答える
32

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

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

UILabel IBOutlet *myLabel;
- (IBAction)pushme:(id)sender;

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

于 2009-10-29T11:19:32.647 に答える
7

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

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

于 2009-10-29T11:31:11.063 に答える
7

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

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

どのように nib ファイルが読み込まれるか、iOS6 用の Matt のオンラインブックのスクリーンショット

于 2016-04-18T18:58:50.220 に答える
4

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

于 2012-08-10T05:02:53.907 に答える
3

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

于 2009-10-29T11:20:30.167 に答える
1

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

于 2015-02-02T22:01:51.007 に答える