在不使用屬性或將單元格與其表視圖耦合的情況下,可以通過觸摸其中的控件來獲取單元格的索引路徑。
要做的第一件事就是目標 - 動作添加到您的按鈕,像這樣:
[button addTarget:cell action:@selector(buttonTapped:withEvent:) forControlEvents:UIControlEventTouchUpInside];
然後你可以使用事件參數的操作方法:
- (void)buttonTapped:(id)sender withEvent:(UIEvent *)event
{
UITouch *touch = [[event allTouches] anyObject];
CGPoint location = [touch locationInView:self.tableView];
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:location];
// ....
}
或者視圖層次結構來檢索單元格:
- (void)buttonTapped:(id)sender withEvent:(UIEvent *)event
{
UITableViewCell *cell = (UITableViewCell *)[[sender superview] superview];
NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
// ....
}
或發件人的位置(即控制):
- (void)buttonTapped:(id)sender withEvent:(UIEvent *)event
{
CGPoint position = [sender convertPoint:CGPointZero toView:self.tableView];
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:position];
// ....
}
如果我理解正確,你想知道該行是否在屏幕上? –