如何在uitextfield委托方法中获取单元格索引路径?

Dee*_*pak 14 iphone user-interface objective-c uitableview uitextfield

我在自定义单元格中有两个文本字段如何在textfield委托方法中获取Tableview单元格的索引路径值我想从用户获取输入值并将其保存到relavent对象.用户可以通过单击单元格中的按钮(添加更多)来添加更多单元格.

在此输入图像描述

提前致谢...

sky*_*der 18

更新到iOS7!

使用iOS7中的新功能现在代码应该是:

UITableViewCell *textFieldRowCell;

if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) {
    // Load resources for iOS 6.1 or earlier
    textFieldRowCell = (UITableViewCell *) textField.superview.superview;

} else {
    // Load resources for iOS 7 or later
    textFieldRowCell = (UITableViewCell *) textField.superview.superview.superview; 
   // TextField -> UITableVieCellContentView -> (in iOS 7!)ScrollView -> Whoola!
}

NSIndexPath *indexPath = [self.tableView indexPathForCell:textFieldRowCell];
Run Code Online (Sandbox Code Playgroud)


Dan*_*iel 13

更动态的解决方案(没有硬编码的超级视图级别和不同iOS版本的相同代码).

此外,indexPathForCell:如果单元格不可见,则无法工作,因此我将其indexPathForRowAtPoint:用作解决方法.

//find the UITableViewcell superview
UIView *cell = textField;
while (cell && ![cell isKindOfClass:[UITableViewCell class]])
    cell = cell.superview;

//use the UITableViewcell superview to get the NSIndexPath
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:cell.center];
Run Code Online (Sandbox Code Playgroud)


Ker*_*ess 10

这就是我一直在做的事情并且运气好了.我抓住textField框架的原点.将其转换为一个点.然后将该点转换为索引路径.

-(void)textFieldDidBeginEditing:(UITextField *)textField
{
    CGPoint origin = textField.frame.origin;
    CGPoint point = [textField.superview convertPoint:origin toView:self.tableView];

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

    [self.tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionMiddle animated:YES];

}
Run Code Online (Sandbox Code Playgroud)