我正在做一个基于iPhone的BI项目。
我在UITextViewCell中有一个UITextField,UITextFieldDelegate指向我的UITableViewController,我没有为UITextViewCell或UITextField做任何子类。
现在,在文本字段结束后,对委托进行编辑
-(void)textFieldDidEndEditing:(UITextField*)textField我需要知道我正在编辑的当前单元格的行索引,有没有办法获得文本字段的父单元格?或者,我可以在创建单元格时为文本字段设置一些属性,比如'rowIndex‘吗?我真的需要这个值来保存新的文本。
谢谢。愿原力与你同在。
发布于 2011-04-21 02:16:59
您真正要问的问题是,当用户在表单元格的文本字段中输入数据时,如何知道将对数据模型所做的更改保存到何处。
@Ole Begemann建议使用tag属性是完全有效的。这取决于您的数据模型。如果您只需要一个整数来标识该值在模型中的位置,则将该整数存储在每个文本字段的tag属性中。由于您没有使用节,因此行索引相当于拥有整个索引路径。
请记住,所有视图都有一个tag属性。因此,可以将行索引存储在cell.contentView.tag中,将列索引存储在textField.tag中。在文本字段中,您可以使用textField.superview获得内容视图。如果另一个视图是textField的superview,则使用该视图。
如果您需要更复杂的东西来标识模型中的位置来保存文本字段内容,那么您需要做一些不同的事情。我将创建UITableViewCell或UITextField的子类,并将您需要的任何信息存储在子类中定义的属性中。
发布于 2013-09-24 19:55:47
随着iOS 7中UITableViewCell类的变化,您必须以更动态的方式访问父单元格。您可以通过使用以下代码片段(应该放在textFieldDidEndEditing:委托方法中)来访问UITextField的单元格。
// 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];该代码片段在iOS 6和iOS 7中都有效。
发布于 2011-04-20 23:09:57
如果已将UITextField作为子视图添加到UITableViewCell中,则可以从UITextField's superview属性访问UITableViewCell。
试试下面的。
UITableViewCell* myCell = (UITableViewCell*)textField.superview ;如果你遇到任何问题,请让我知道。
编辑:
您将从UITextField的标记属性中获取行,因此
NSUInteger myRow = myTextField.tag;正如您所说的,您的应用程序不支持具有多个部分,这意味着您的所有行都位于0部分。
NSUInteger mySection = 0;现在根据上面的信息构造一个NSIndexPath实例。
NSIndexPath *myIndexPath =[NSIndexPath indexPathForRow:myRow inSection:mySection]; //Do'nt release myIndexPath instance.
UITableViewCell* myCell = [myTableView cellForRowAtIndexPath:myIndexPath];现在,您在您的UITableView中有了位于myRow的myCell
https://stackoverflow.com/questions/5732438
复制相似问题