1

私は iOS アプリを書いていますが、読みやすくするために 1 つの質問があります。

たとえば、隠したいことがたくさんあるので、次のようにします。mytext2.hidden=はい; mytext3.hidden=はい; ...

これを書く方法はありますか: (mytext1, mytext2, mytext3).hidden =YES;

?

ありがとう

4

2 に答える 2

2

次のように、セレクターを使用して配列を反復処理できます。

[theArray makeObjectsPerformSelector:@selector(methodName)];

...そして、単一のオブジェクト パラメータを取るバリエーションがあります。ただし、これはスカラー型を処理しないため、hidden=YES を設定するには、ブロックを使用して列挙できます。

[theArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
    (UITextField *)obj.hidden = YES;
}];

それが冗長すぎる場合は、たとえばコントロールのコレクションを想定するメソッドを配列クラスに追加できます。これらは列挙を隠すだけですが、呼び出し元は次のように単純です。

[myArrayOfControls hidden:YES];

目に優しいですよね?これは、NSArray メソッドの独自のカスタム カテゴリを作成することで実現できます。

// in Array+UIControlEnumeration.m

@implementation NSArray (UIControlEnumeration)

- (void)hidden:(BOOL)hidden {

    for (UIControl *control in self) {
        control.hidden = hidden;
    }
}
于 2012-04-08T04:52:35.523 に答える
1

いいえ、そのような構文はObjective-Cには存在しません。合成プロパティとして追加する配列にそれらすべてを貼り付けて、次のようにループする方がよいでしょう。

for (UITextField *textField in self.myArrayOfTextFields) {
    [textField setHidden:YES];
}
于 2012-04-07T22:43:42.340 に答える