删除单元格不会清除单元格内的UITextField

时间:2014-03-29 18:52:14

标签: ios objective-c uitableview uitextfield

我有一个包含UITextField的自定义单元格。问题是当我尝试删除一个单元格然后添加一个单元格时,添加的单元格的文本字段包含我之前删除的单元格中的字符串。我的第二个问题是我根据索引路径在视觉上对这些单元格进行编号,但是如果我重新排列它们,则数字不会更改为新的位置。我试图通过重新加载表来解决这个问题,但随后出现了其他问题。任何这些问题的任何帮助将非常感谢。这是我正在使用的代码:

要删除(尝试清除文本字段):

Cell *cell = (Cell *)[tableView cellForRowAtIndexPath:indexPath];
cell.textField.text = @"";

[self.tableView beginUpdates];
[self.array removeObjectAtIndex:indexPath.row];
[self.tableView deleteRowsAtIndexPaths: @[ indexPath ] withRowAnimation: UITableViewRowAnimationAutomatic];
//[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
[self.tableView endUpdates];
[self.tableView reloadData];

设置视觉编号:

在cellForRowAtIndexPath中:

NSString *rowString1 = [NSString stringWithFormat:@"%d.", (int)indexPath.row + 1];
self.cell.rowNumber = rowString1;

在单元格中:

- (void) setRowNumber:(NSString *)rowNumber{
    _rowNumber = rowNumber;
    self.periodLabel.text = _rowNumber;
}

self.periodLabel = [[UILabel alloc] init];
self.periodLabel.frame = CGRectMake(10, 6, 30, 30);
self.periodLabel.textColor = [UIColor blackColor];
self.periodLabel.text = self.rowNumber;
self.periodLabel.font = [UIFont fontWithName:@"HelveticaNeue" size:18];
[self.contentView addSubview:self.periodLabel];

1 个答案:

答案 0 :(得分:0)

UITableViewCells可以重复使用。这实际上意味着每次调用dequeueReusableCellWithIdentifier时,您可能会获得先前提供给另一行的相同单元格。起初这有点奇怪。他们这样做的原因是当表有更多行时避免过多的对象创建和内存分配。

实际上,这意味着每次dequeueReusableCellWithIdentifier返回一个单元格时,您总是需要设置值(即标签文本,图像等),否则这些值将保留在前一行中。

更多信息:

https://developer.apple.com/library/ios/documentation/userexperience/conceptual/tableview_iphone/CreateConfigureTableView/CreateConfigureTableView.html#//apple_ref/doc/uid/TP40007451-CH6-SW5