10

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

请让我知道如何获取文本视图的行索引。

4

5 回答 5

25

你的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);
于 2012-12-05T13:01:59.877 回答
7

它真的很简单,在cellForRowAtIndexPath. 只需标记您的textView喜欢

cell.txtView.tag = indexPath.row;

textViewDidBeginEditing在 textView Delegate 方法中使用以下代码 ( )查找行

int row = textView.tag;
于 2012-12-05T14:27:13.823 回答
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
}
于 2015-07-13T17:14:25.723 回答
3

这是完成您所要求的更优雅的方式

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

NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:senderPosition];
于 2016-04-21T14:06:18.803 回答
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);
于 2015-06-22T19:52:01.203 回答