1

以下のコードにbutton.tagを使用する以外に、ブール値をaddClickedメソッドに渡す方法はありますか?

[cellview.buttonAdd addTarget:self action:@selector(addClicked:) forControlEvents:UIControlEventTouchUpInside];

-(void) addClicked:(id)sender {

}

前もって感謝します。

4

3 に答える 3

3

整数プロパティを追加する場合は、タグを使用できます。非整数プロパティを追加する場合は、連想参照を含むカテゴリを使用する必要があります。継承するUIButtonはプロパティをまったく投稿できません。あなたはこれを見ることができます:

プロパティを追加するためのサブクラスUIButton

于 2012-08-02T05:27:02.967 に答える
2

次のようなものを試してください。

-(void) addClicked:(id)sender
{
    UIButton * button = (UIButton*)sender;
    NSLog(@"Button Tag: %i", button.tag);
}

ブール値を渡すとはどういう意味かわかりません。

于 2012-08-02T03:49:38.763 に答える
1

簡単な答え:メソッドに直接追加情報を渡すことはできません。

とにかくなぜあなたはそれをしたいのですか?ボタンがクリックされたという事実以外に、ボタンが通信する必要があることを「知っている」のは何ですか?

これを行う方法は、クリックハンドラーを実装するクラスのインスタンス変数を使用することです。

ボタン自体の内部の状態を本当に維持する必要がある場合は、次のようにサブクラス化します。

@interface CustomButton : UIButton

@property (nonatomic, assign) BOOL myBoolValue;

@end

/* ... */

- (void)addClicked:(id)sender
{
    CustomButton *button = (CustomButton *)sender;
    if (button.myBoolValue) {
        // Whatever you want to do.
    }
}
于 2012-08-02T03:50:50.547 に答える