在表格视图中访问我的自定义单元格
Posted
技术标签:
【中文标题】在表格视图中访问我的自定义单元格【英文标题】:accessing my custom cell in a tableview 【发布时间】:2013-11-18 18:17:33 【问题描述】:现在我有一个这样构建的 tableview:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
static NSString *CellIdentifier = @"PhotoCell";
PhotoSummaryCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
// Configure the cell...
NSString *photoCaption = [[[self.form valueForKey:@"photos"] objectAtIndex:indexPath.row] objectForKey:@"caption" ];
cell.textfieldCaption.text = photoCaption;
cell.textfieldCaption.tag=indexPath.row;
return cell;
我想要做的是获取已编辑文本字段的索引?我连接了自定义单元格中的文本字段,并在结束编辑时执行了一个操作:
- (IBAction)getIndexForCaption:(id)sender
[[[self.form valueForKey:@"photos"] objectAtIndex:cell.textfieldCaption.tag] setObject:cell.textfieldCaption.text forKey:@"caption"];
但是现在情况如何,我没有“单元格”,所以我收到未声明的标识符“单元格”错误。在这种情况下如何获取自定义单元格?
【问题讨论】:
假设sender
是单元格中的UITextField
,从文本字段向上走superview
,直到获得表格视图单元格。
***.com/questions/18743099/… 的答案显示了查找“封闭”表格视图单元格的不同方法。
仅供参考 - 小心使用 indexPath.row
作为标签。这仅在表格的行无法插入(除了末尾之外)、删除或重新排序时才有效。
【参考方案1】:
有几个选项可以做到这一点。就个人而言,我更喜欢为PhotoSummaryCell
创建一个带有额外属性的 UITextField 子类。您可以在单元格被回收时设置此属性,这将使获取文本字段的索引变得如此简单:
NSIndexPath *indexOfTextField = [self.tableView indexPathForCell:textField.cell];
当然,您可以逐步遍历文本字段视图层次结构,直到找到一个单元格,或者将索引路径的行保存到 @rmaddy 和 @Martin R 指出的文本字段 tag
属性中。
确保将 cell
属性声明为 weak
以避免保留循环。
【讨论】:
我不确定你的意思。我需要再上课吗?然后呢? @BluGeni 是的,你创建了另一个类,它是 UITextField 的子类。然后,将自定义属性添加到单元格的该文本字段(弱引用)。然后用这个新的子类替换单元格上的当前文本字段。当单元格被重用(cellForRow...)时,您将当前单元格设置为文本字段的单元格属性。您现在可以通过直接从文本字段 extextField.cell
访问它来引用单元格。以上是关于在表格视图中访问我的自定义单元格的主要内容,如果未能解决你的问题,请参考以下文章