2012-03-22 14 views
1

私は自分のUITableViewのすべてのセルの中にボタンを持っていますが、ボタンがトリガーされたときに、そのセルがどれであるのかを知りたいと思います。タグを使用するか、ボタンをサブクラス化してindexPathを追加することができますが、削除またはセルを追加するときに問題が発生し、これらのボタンをすべて更新する必要があります。人々がこれをうまくやっていると考えることができる別の方法はありますか?UITableViewCellの内部のボタン - 内部にあるセルをどのように見つけ出すのですか?

答えて

2
UITableViewCell * cell = (UITableViewCell*) button.superview; 
NSIndexPath * indexpath = [myTableView indexPathForCell:cell] 
2

UITableViewindexPathForCell:メソッドを使用してください。セルを取り、セルのインデックスパスを取得します。

2

buttonInCellは、送信者のボタンを押したままどここの

- (void) buttonAction:(id)sender{ 
    UIButton *buttonInCell = (UIButton *)sender; 
    NSIndexPath *indexPathOfCell = [self.yourTable indexPathForCell: 
           (UITableViewCell *)[[buttonInCell superview] superview]]; 
} 

を試してみて、indexPathOfCellは、アクションがトリガされた特定のボタンを有する細胞のindexPath値を保持している

上記の方法はiOS 7では動作しない可能性があります。

アップデート

- (void)buttonAction:(id)sender { 
    UIButton *buttonInCell = (UIButton *)sender; 
    CGPoint center= buttonInCell.center; 
    CGPoint rootViewPoint = [buttonInCell.superview convertPoint:center toView:self.yourTableView]; 
    NSIndexPath *indexPath = [self.yourTableView indexPathForRowAtPoint:rootViewPoint]; 
    NSLog(@"%@",indexPath); 
} 
関連する問題