セルのコンテンツビューにボタンを作成しました。ボタンがクリックされた行を検出したいiPhoneのそのセルにあるボタンのタップでセル行の値を検出しますか?
2
A
答えて
4
あなたはあなたのUIViewController
はこのように、UIButton
からUIViewController
に、ターゲット・アクションを作成することにより、イベントを受信持っている必要があります。その後、あなたのUIViewController
のアクションメソッドでは、あなたが利用することができ
[button addTarget:self action:@selector(cellButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
正しいNSIndexPath
を取得するUITableView
秒indexPathForCell:
方法:
- (void) cellButtonClicked: (id) sender {
UIButton *btn = (UIButton *) sender;
UITableViewCell *cell = (UITableViewCell *) [[btn superview] superview];
NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
//do something with indexPath...
}
0
ウィルに同意し、あなたはトンを持っていますoOs7で反復する
for (UIView *parent = [btn superview]; parent != nil; parent = [parent superview]) {
if ([parent isKindOfClass: [UITableViewCell class]]) {
UITableViewCell *cell = (UITableViewCell *) parent;
NSIndexPath *indexPath = [self.tableView indexPathForCell: cell];
break;
}
}
1
これは、リンゴがビューの階層を変更したときに転倒しない代替方法です。基本的に、テーブルビューの座標系でボタンの原点を探します。あなたはpoint
が入っている行のNSIndexPath
を見つけることができることを知っていたら。
- (void)buttonTapped:(UIButton *)button
{
CGPoint buttonOrigin = [button convertPoint:CGPointZero toView:self.tableView];
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:buttonOrigin];
}
0
をあなたは簡単な解決策とそれを達成することができます。
ほとんどの場合、各セルは配列内のオブジェクトを表すため、カスタムセルクラス内で、(配列内の)セルIDまたはサーバーで定義されているセルIDを表すプロパティを定義する必要がありますDBとボタンがタップされたときにあなたはself.id
を介して簡単に得ることができます - idは、セルのidプロパティを表します。
私はインデックスパスを正しく取得します.... tank u Jacob – Hari1251
この方法は、iOS 7では今ではより多くのビューがUITableViewCellsに存在するため、意図したとおりには機能しません。私は定期的にこのコードを持つセルの代わりにUITableViewCellScrollViewを取得していました。 – Will