我有桌子和细胞;每个单元格包含带有电话号码的标签当我点击标签时,会出现UIMenuController
。
是否有主要的方法来查找包含所选标签的单元格的indexPath? (didSelectRowAtIndexPath:
不应该被调用)
我可以想象很多肮脏的黑客,但我正在寻找一个主要/好的解决方案。
UPD
我参考了所选标签。
答案 0 :(得分:4)
编辑:
这是一种更好的方式。
- (IBAction)someMethod:(id)sender {
CGPoint hitPoint = [sender convertPoint:CGPointZero toView:self.tableView];
NSIndexPath *hitIndex = [self.tableView indexPathForRowAtPoint:hitPoint];
}
答案 1 :(得分:1)
从标签中搜索标签层次结构中的单元格对象:
-(UITableViewCell*) cellContainingView:(UIView*)view
{
UIView* currentView = view;
while (currentView)
{
if ([currentView isKindOfClass:[UITableViewCell class]])
{
return (UITableViewCell*)currentView;
}
currentView = currentView.superview;
}
return nil;
}
获得手机后,请致电[tableView indexPathForCell:cell]
使用此方法而不是硬编码view.superview.superview会使您的代码更强大,因为它可以通过系统版本处理单元格视图层次结构中的可能更改。
答案 2 :(得分:-1)
你可以去:
NSMutableArray *cells = [[NSMutableArray alloc] init];
for (NSInteger j = 0; j < [tableView numberOfSections]; ++j)
{
for (NSInteger i = 0; i < [tableView numberOfRowsInSection:j]; ++i)
{
[cells addObject:[tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:j]]];
}
}
for (UITableViewCell *cell in cells){
for (UILabel *label in cell.subviews){
if (label == yourLabel)
indexPath = [tableView indexPathForCell: cell];
}
}