在UITableview中获取自定义单元格的行索引

时间:2012-12-05 12:57:53

标签: iphone objective-c ipad uitableview ios5

我正在开发一款ipad应用。我在应用程序中有一个UITableview。 UITableview以编程方式创建,其中一个标签和textview作为其子视图。 tableview中最多可以有五行。一次向用户显示2行。在运行时,它需要在textview&中输入一些文本。将其保存在本地sqlite db中。我在代码中实现了textViewDidBeginEditing和textViewDidEndEditing委托。在textViewDidEndEditing委托中,我试图在NSMUtable数组中添加/替换文本(在textview中输入)。为此,我需要输入文本的textview的rowindex。这样我就可以在数组中添加/替换相应的行索引。

请告诉我如何获取文本视图的行索引。

5 个答案:

答案 0 :(得分:22)

您的TextView将包含在某种单元格中。找到此单元格后,可以向表格询问索引。从TextView向上浏览视图层次结构以查找单元格。例如:

TextView* textView = // your textView;
UITableViewCell* cell = (UITableViewCell*)[textView superview];
UITableView* table = (UITableView *)[cell superview];
NSIndexPath* pathOfTheCell = [table indexPathForCell:cell];
NSInteger rowOfTheCell = [pathOfTheCell row];
NSLog(@"rowofthecell %d", rowOfTheCell);

答案 1 :(得分:5)

非常简单,在cellForRowAtIndexPath。只需标记您的textView

即可
cell.txtView.tag = indexPath.row;
textView Delegate方法中的

使用以下代码(textViewDidBeginEditing

查找行
int row = textView.tag;

答案 2 :(得分:3)

iOS 8.4 上运行 Swift

@IBAction func signInUpBigButtonPressed(sender: SignInUpMenuTableViewControllerBigButton) {
    // We set the self.indexCellContainingButtonClicked with the cell number selected.
    var parentCell: UIView! = sender
    do {
        parentCell = parentCell.superview!
    } while !(parentCell is UITableViewCell)
    let cell = parentCell as! UITableViewCell
    self.indexCellContainingButtonClicked = self.tableView.indexPathForCell(cell)!.row
}

答案 3 :(得分:3)

这是一种更优雅的方式来完成你的要求

CGPoint senderPosition = [sender convertPoint:CGPointZero toView:self.tableView];

NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:senderPosition];

答案 4 :(得分:1)

运行IOS 8.3在textViewDidEndEditing中找到并实现了这个 方法;效果很好!

UIView *parentCell = sender
while (![parentCell isKindOfClass:[UITableViewCell class]]) {   // iOS 7 onwards the table cell hierachy has changed.
    parentCell = parentCell.superview;
}

UIView *parentView = parentCell.superview;

while (![parentView isKindOfClass:[UITableView class]]) {   // iOS 7 onwards the table cell hierachy has changed.
    parentView = parentView.superview;
}


UITableView *tableView = (UITableView *)parentView;
NSIndexPath *indexPath = [tableView indexPathForCell:(UITableViewCell *)parentCell];

NSLog(@"indexPath = %@", indexPath);