カスタムUITableViewCellの一部であるボタンがあります。私が欲しいのは、誰かがボタンをクリックしたときに、そのセルに対して適切なtableView:cellForRowAtIndexPathが呼び出されることです。
ボタンを適切なcellForRowAtIndexPathに関連付けるにはどうすればよいですか?
提案やコードサンプルは高く評価されます
カスタムUITableViewCellの一部であるボタンがあります。私が欲しいのは、誰かがボタンをクリックしたときに、そのセルに対して適切なtableView:cellForRowAtIndexPathが呼び出されることです。
ボタンを適切なcellForRowAtIndexPathに関連付けるにはどうすればよいですか?
提案やコードサンプルは高く評価されます
touchイベントからindexPathを取得できます。buttonTappedメソッドを次のように変更します。
- (void) buttonTapped:(id) sender forEvent:(UIEvent *)event
次に、次のようなものを使用します。
NSIndexPath *indexPath = [tableView indexPathForRowAtPoint:[[[event touchesForView:sender] anyObject] locationInView:tableView]];
セクションが1つしかない場合は、おそらくUIView
のtag
プロパティを使用できます。
次のようなものは理論的には機能します。
- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)idxPath
{
Your_UITableViewCell_Subclass * cell = [tableView dequeueCellWithIdentifier:@"..."];
cell.button.tag = idxPath.row;
....
return cell;
}
....
- (void) buttonTapped:(id) sender
{
int idx = ((UIButton *)sender).tag;
NSIndexPath * idxPath = [NSIndexPath indexPathForRow:idx inSection:0];
UITableViewCell * cell = [self tableView:tableView cellForRowAtIndexPath:idxPath];
// Do whatever you want to do with the cell
}