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