如何从其编辑的UITextField获取UITableViewCell的索引

Zha*_*ang 6 iphone uitableview uitextfield uitextfielddelegate

我正在研究基于iPhone的BI项目.

我有一个UITextFieldUITextViewCell中,UITextFieldDelegate点到我UITableViewController,我没有做过任何子类的UITextViewCell也没有UITextField.

现在,在委托文本字段结束编辑之后

  -(void)textFieldDidEndEditing:(UITextField*)textField
Run Code Online (Sandbox Code Playgroud)

我需要知道我正在编辑的当前单元格的行索引,有没有办法获取文本字段的父单元格?或者我可以在创建单元格时将某些属性设置为文本字段,如'rowIndex'?我真的需要这个值以保存新文本.

谢谢.愿原力与你同在.

Mar*_*ski 9

随着UITableViewCelliOS 7 中类的更改,您必须有一种更动态的方式来访问父单元.您可以UITextField使用以下代码段(您应该在textFieldDidEndEditing:委托方法中放置)访问该单元格

// Get the cell in which the textfield is embedded
id textFieldSuper = textField;
while (![textFieldSuper isKindOfClass:[UITableViewCell class]]) {
    textFieldSuper = [textFieldSuper superview];
}
// Get that cell's index path
NSIndexPath *indexPath = [self.tableView indexPathForCell:(UITableViewCell *)textFieldSuper];
Run Code Online (Sandbox Code Playgroud)

该代码段适用于iOS 6和iOS 7.


XJo*_*nes 8

您要问的真正问题是,当用户将数据输入表格单元格中的文本字段时,如何知道将更改保存到数据模型的位置.

@Ole Begemann建议使用该tag物业是完全有效的.这取决于您的数据模型.如果您只需要一个整数来标识值在模型中的位置,那么将该整数存储在tag每个文本字段的属性中.由于您不使用节,因此行索引等同于具有整个索引路径.

请记住,所有观点都有一个tag属性.所以你可以存储行索引cell.contentView.tag和列索引textField.tag.在文本字段中,您可以获得内容视图textField.superview.如果不同的视图是textField使用的超级视图而是.

如果您需要比这更复杂的东西来识别模型中的位置以保存文本字段内容,那么您将需要做一些不同的事情.我要么子类UITableViewCellUITextField和存储任何信息,你在你的子类中定义的属性需要.