我有TableView我有一个UITableViewCell。在UItableViewController中我有UITextField。 在我点击TextField时的应用程序中。它是开放的。 但方法 - tableView:willSelectRowAtIndexPath: - tableView:didSelectRowAtIndexPath:不起作用,因为我们不直接点击行。 我怎么知道当前行的indexPath.row?
答案 0 :(得分:0)
在cellForRowAtIndexPath
方法中,通过将当前行的tag属性设置为indexPath.row的值来将当前行分配给UITextField
[yourTextfield setTag:indexPath.row];
当文本字段完成编辑后,您可以读出它的标记属性,然后就完成了。
答案 1 :(得分:0)
你可以:
子类UITextField并为其提供indexPath属性。在cellForRowAtIndexPath中,创建textField并将其添加到单元格时,请指定该属性。然后在textField委托方法中,您将可以访问正确的indexPath。此方法还允许您将其他信息与您可能需要的textField相关联。
使用UIControl的操作方法:
- (void)textFieldDidChangeValue:(id)sender withControlEvents:(UIEvent *)event {
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:
[[[event touchesForView:sender] anyObject] locationInView:self.tableView]];
//Do whatever you need to, now that you have the indexPath
}
此方法避免了需要子类化。
答案 2 :(得分:0)
只要你有对tableView和textField的引用,这样的东西应该可以工作。细胞也需要可见:
UITableViewCell* tvc = (UITableViewCell*)[textField superview];
while ( tvc != nil && ![tvc isKindOfClass: [UITableViewCell class]] )
tvc = [tvc superview];
NSIndexPath* ip = [tableView indexPathForCell: tvc];