0

カスタムセル(UITableViewCellのサブクラス)を持つUITableViewがあります。各セル ビューには、btn1 と btn2 の 2 つのボタンがあります。これらの btn1s の中で TouchUp を処理するように ViewController を設定しました。

どのセル ボタンがクリックされたかを知るにはどうすればよいですか?

4

2 に答える 2

1

私はそれにタグのプロパティを置きます。左のタグには 1 のタグがあり、右のタグには 2 のタグがあるとします。すべての UIView には、整数値である tag プロパティがあります。

@property (nonatomic) NSInteger tag;

次に、ボタンのタップを受け取ったときに、ボタンのタグが 1 か 2 かを尋ねると、それがどちらのボタンであったかがわかります。

ボタンが属していたインデックス パスを知りたい場合は、ボタンのスーパービュー (セルである必要があります)、またはセルのコンテンツ ビューに配置した場合はボタンのスーパービューのスーパービューを取得できます (通常はそうする必要があります)。

UITableViewCell *cell = (UITableViewCell *)[button superview];
NSIndexPath *pathForSelectedButton = [tableView indexPathForCell:cell];

上記のコードは、ボタンがセルに直接配置されていることを前提としていることに注意してください。

于 2012-07-17T00:35:57.320 に答える
1

UIButton には tag プロパティがあります。セクションが 1 つしかない場合は、indexPath.row*2 や indexPath.row*2 + 1 など、各ボタンに一意の値を設定できます。

そして、各ボタンのターゲット メソッドを追加できます。

[button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside]

最後に、次のように buttonPressed メソッドを実装します

- (void)buttonPressed:(UIButton *)sender {
    NSInteger tag = sender.tag;
    // your code here.
}
于 2012-07-17T00:39:03.457 に答える