我想在tableview单元格中获取触摸的文本框的索引。事实上,我可以在IOS 7之前做到这一点。在过去,我可以在下面获得文本框索引。这个方法也失败了IOS 7.我读标签应该使用而不是这个方法。但我也为每个不同的文本框使用标记。因为单击文本框我正在做不同的事情,例如打开选择器或打开选择视图。 Plase帮助我,如何获取每个文本框的行号当触摸到文本框时。
-(NSInteger)getTextFieldCellRow:(id)element{
UITableViewCell *cell = (UITableViewCell *)[[(UITextField*)element superview] superview];
UITableView *table = (UITableView *)[cell superview];
NSIndexPath *textFieldIndexPath = [table indexPathForCell:cell];
return textFieldIndexPath.row;
}
答案 0 :(得分:1)
好的,我解决了
-(NSIndexPath *) getButtonCellRow:(UITextField *) b {
UITableView *tv = nil;
UIView *superViewTemp = [b superview];
UITableViewCell *cell=nil;
BOOL isFoundTable=FALSE;
BOOL isFoundCell=FALSE;
while(superViewTemp != nil && ![superViewTemp isKindOfClass:[UIWindow class]]){
if ([superViewTemp isKindOfClass:[UITableViewCell class]]) {
cell=(UITableViewCell*)superViewTemp;
isFoundCell = TRUE;
}else if ([superViewTemp isKindOfClass:[UITableView class]]){
tv = (UITableView*)superViewTemp;
isFoundTable = TRUE;
}
superViewTemp = [superViewTemp superview];
if(isFoundCell && isFoundTable){
break;
}
}
if(tv != nil && cell != nil){
return [tv indexPathForCell:(UITableViewCell*)cell];
}
return nil;
}
答案 1 :(得分:0)
尝试使用以下代码:
UIView *contentView = (UIVIew *)[textfield superview];
UITableViewCell *cell = (UITableViewCell *)[contentView superview];
NSIndexPath *indexPath = [self.tableview indexPathForCell:cell];
NSLog(@"%d", indexPath.row);
但是在iOS 7中,您可以通过以下代码获取UITableViewCell
:
UITableViewCell *cell = (UITableViewCell *)[[contentView superview] superview];
答案 2 :(得分:0)
这应该是一个非常简单的解决方案
UIView * view = textField;
while(![view isKindOfClass:[UITableViewCell class]])
{
view = [view superview];
}
CellClass * cell =(CellClass *)view;