0

iOSアプリ用に10個のボタンを3セット欲しい。各セットを表示/非表示にします(一度に1セットずつ表示します)。これを行うためにタグを使用することを計画しています。

ボタンごとにプロパティ(例:btn01、btn02など)があるので、30個のプロパティがあります。これを配列に追加し、次のコードを使用して、いずれかのタグが付いたボタンを非表示にします。

私の質問は、30個のプロパティ(ボタンごとに1つ)を設定するよりも、オブジェクトの配列を作成するためのより効率的な方法があるかどうかです。ループを使用してIBから各ボタンを何らかの方法で収集する、よりクリーンな方法があるかどうか疑問に思っても問題ありません。考えられない。

    if (tagState == 1) {
        tagState = 2;
    }else {
        tagState = 1;
    }

    for (btn in myArray) {
        NSLog(@"%@",btn);
        if (tagState == 1) {
            if (btn.tag == 1) {
                [btn setHidden:YES];
            }
            if (btn.tag == 2) {
                [btn setHidden:NO];
            }

        } else if (tagState == 2) {
            if (btn.tag == 1) {
                [btn setHidden:NO];
            }
            if (btn.tag == 2) {
                [btn setHidden:YES];
            }

        }    
    }
}
4

2 に答える 2

1

ここでは、ビュー階層を非常に効果的に使用できると思います。ボタンの各グループを独自のグループに配置しUIView、3つだけをアウトレットに接続して、それらUIViewを非表示/表示します。これは、他の理由で個々のボタンにアクセスする必要がない場合にのみ機能することに注意してください。

于 2012-07-12T05:22:34.440 に答える
1

使用できますIBOutletCollection、それはNSArrayアウトレットのです。

たとえば、コレクションからすべてのアウトレットを非表示にするには、次を使用できます。

[outlets setValue:@YES forKey:@"hidden"]

また

[outlets setValue:[NSNumber numberWithBool:YES] forKey:@"hidden"]

LLVM<4.0を使用する場合

于 2012-07-12T16:10:45.673 に答える