0

1 つの機能で 2 セットの同一のボタンを更新できるようにしたいと考えています。また、すべてのボタンを更新するのではなく、一部のみを更新します。

このような関数を使用できますか?:

-(void) updateFields{
                    updateButton1 : (Bool) x
                    updateButton2 : (Bool) y
                    updateButton3 : (Bool) z }

実装は次のようになります。

[button1_1 setEnabled:x];
[button1_2 setEnabled:x]; //called only if updateButton1 is given an argument
[button2_1 setEnabled:y];
etc...
4

4 に答える 4

0

Matt Gallagherが Cocoa の可変引数リスト で説明しているように、可変引数リストを使用して Objective-C メソッドを作成することは可能です。可変引数リストは、Foundation フレームワークでも使用されます+[NSArray arrayWithObjects:...]

とは言うものの、特にオブジェクト リテラルを使用して配列を簡単に作成できるようになったことを考えると、メソッド内のボタンのリストを配列として渡す方がおそらくはるかに手間がかかりません。

[foo updateFields:@[button1, button2, button3]];
于 2013-10-24T15:50:40.373 に答える
0

プリミティブ データ型からオブジェクトを作成し、それらを NSArray または NSDictionary に配置しない限り、これは不可能な場合があります。その他のオプションとして、カスタム オブジェクトを作成し、それを引数として渡すことができます。

- (void)selectButton:(SelectedButton *)iButton {
     if (iButton.type = A) {
     // Handle A
    } else if (iButton.type = B) {
     // Handle B
    } else if (iButton.type = C) {
     // Handle C
    }
}
于 2013-10-24T15:43:02.473 に答える
0

あなたがしようとしている構文は、C関数としてより理にかなっていると思います

ただし、この例では、パラメーターはオプションではないことに注意してください。

void updateButtons(BOOL btn1, BOOL btn2, BOOL btn3){
    button1.enabled = btn1
    button2.enabled = btn2
    button3.enabled = btn3
}
于 2013-10-24T15:43:02.637 に答える