1

すべて同じアクションにリンクされている 20 個の同一のボタンのセットがあります。唯一の違いはタグです。ただし、それらすべてを同じ IBOutlet @property にリンクすることはできないことがわかりました。これらの 20 個の同一のボタンのそれぞれに対して、20 個の IBOutlet @properties を作成する必要がありますか?

そうしないと、this class is not key value coding-compliant for the key btn_chooseMark.エラーが発生し、アプリがクラッシュします。

4

3 に答える 3

1

コンセントはまったく必要ありません。個別のタグを使用して、20 個すべてをビューに配置します。アクセスする必要がある場合は、

UIButton *button = [self.view viewWithTag:x];

明らかにこれを「for」ループに入れることができます。また、20 個すべてに対して 1 つのアクション アイテムを使用することは完全に正常であり、ObjectiveC の通常のプラクティスです。

于 2012-08-17T23:34:25.370 に答える
1

IBAction の外でボタンを操作する必要がある場合は、次のように IBOutletCollection を作成します。

@property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *myButtons;

次のようにボタンにアクセスできます。

for (UIButton *button in myButtons){
        if (button.tag == 2) {
               [button setAlpha:1];
        }
}

そして、あなたが彼らにしたいことをしてください。それ以外の場合、IBAction 内でそれらを操作する場合は、送信者を「id」から「UIButton *」に変更します。(あなたはすでにそれを知っているかもしれませんが、ねえ、徹底的にしないのはなぜですか?)

于 2012-08-17T23:36:41.300 に答える
0

IBOutletConnectionが必要なように思えます。すべてのボタンを同じ単一のコンセントに接続しても意味がありません。各オブジェクトはそれ自身のポインターに想定されており、UIオブジェクトポインターの関係は1対1です。

于 2012-08-17T23:22:49.470 に答える