UITableViewCell子视图的NSIndexPath?
有没有得到一个UITableViewCell的contentView子视图的NSIndexPath?
就我而言,我有一个表格视图,其中每一行被分成3个button。 我可以使用button标签来跟踪它是哪一列,但我也需要知道什么行视图是子视图(当用户点击button时)。
由于该button会阻止整个实际的表视图行,didSelectRowAtIndexPath从不会被调用(这是预期的),所以我不能这样做。
我曾尝试过[thisButton superview],但似乎没有工作。 有什么想法吗?
我假设button正在发送其UIControlEventTouchUpInside
事件消息到您的视图控制器? 那么你可以做一些事情:
- (void)buttonPressed:(UIButton *)button { CGPoint location = [button.superview convertPoint:button.center toView:self.tableView]; NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:location]; [self doSomethingWithRowAtIndexPath:indexPath]; }
一种可能的select是在为索引path创build单元时,可以将标记分配为3 * row_number + <the tag number>
。 那么只需将标记除以3即可得到行和%3得到button。
你不需要调用button.superview。 您可以直接从树右侧的任何子视图到表视图
Objective-C的
- (NSIndexPath *)indexPathForCellContainingView:(UIView *)view inTableView:(UITableView *)tableView { CGPoint viewCenterRelativeToTableview = [tableView convertPoint:CGPointMake(CGRectGetMidX(view.bounds), CGRectGetMidY(view.bounds)) fromView:view]; NSIndexPath *cellIndexPath = [tableView indexPathForRowAtPoint:viewCenterRelativeToTableview]; return cellIndexPath }
迅速
func indexPathForCellContainingView(view: UIView, inTableView tableView:UITableView) -> NSIndexPath? { let viewCenterRelativeToTableview = tableView.convertPoint(CGPointMake(CGRectGetMidX(view.bounds), CGRectGetMidY(view.bounds)), fromView:view) return tableView.indexPathForRowAtPoint(viewCenterRelativeToTableview) }