カスタムセル(UITableViewCellのサブクラス)を持つUITableViewがあります。各セル ビューには、btn1 と btn2 の 2 つのボタンがあります。これらの btn1s の中で TouchUp を処理するように ViewController を設定しました。
どのセル ボタンがクリックされたかを知るにはどうすればよいですか?
カスタムセル(UITableViewCellのサブクラス)を持つUITableViewがあります。各セル ビューには、btn1 と btn2 の 2 つのボタンがあります。これらの btn1s の中で TouchUp を処理するように ViewController を設定しました。
どのセル ボタンがクリックされたかを知るにはどうすればよいですか?
私はそれにタグのプロパティを置きます。左のタグには 1 のタグがあり、右のタグには 2 のタグがあるとします。すべての UIView には、整数値である tag プロパティがあります。
@property (nonatomic) NSInteger tag;
次に、ボタンのタップを受け取ったときに、ボタンのタグが 1 か 2 かを尋ねると、それがどちらのボタンであったかがわかります。
ボタンが属していたインデックス パスを知りたい場合は、ボタンのスーパービュー (セルである必要があります)、またはセルのコンテンツ ビューに配置した場合はボタンのスーパービューのスーパービューを取得できます (通常はそうする必要があります)。
UITableViewCell *cell = (UITableViewCell *)[button superview];
NSIndexPath *pathForSelectedButton = [tableView indexPathForCell:cell];
上記のコードは、ボタンがセルに直接配置されていることを前提としていることに注意してください。
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.
}