iOS

2013-04-27, ios

UITableViewでアクセサリがタップされた行を取得

普通のタップであれば、以下のようにUITableViewの選択行を取得することができます。

NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];

アクセサリをタップした場合は、選択行が移動しないため、上記の方法では正しい値が取得できません。StoryBoardのSegueを利用する場合は、prepareForSegueメソッドの中で以下のようにして取得することができます。

UITableViewCell *cell = (UITableViewCell*)sender;
NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
NSLog(@"row=%d",indexPath.row);

Segueを使わない場合は、TableViewDelegateの以下のメソッドを使用します。

- (void)tableView:(UITableView *)tableView
  accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath

参考URL

この記事は役に立ちましたか?