我将 tableview 与可重复使用的单元格一起使用。在每个单元格上,我都有一个带有文本的 textField,我可以对其进行修改。如果文本为空,我删除该单元格。
假设我们有 100 行,我们想要修改第 1 行:我们点击它,给出一个空字符串 @"",向下滚动到第 50 位并点击这个单元格。
现在发生的事情是我们检测到另一个单元格上的点击手势,我调用方法 textFieldDidEndEditing: 来查看我是否应该从 tableview 中删除这个单元格。我使用 cellForRowAtIndexPath: 来获取修改后的单元格。
问题是出现了其他带有空文本字段的单元格。我删除了修改过的单元格,但只有一个。我认为这是可重复使用细胞的问题。
有人可以帮我解决这个问题吗?
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *ImageIdentyfier = @"StandardCellWithImageIdentifier";
StandardCellWithImage *cellImage = (StandardCellWithImage *)[tableView dequeueReusableCellWithIdentifier:ImageIdentyfier];
if(cellImage == nil) {
cellImage = [[StandardCellWithImage alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ImageIdentyfier];
}
cellImage.nameLabel.delegate = self;
Item *item = [self.mutableFetchResults objectAtIndex:indexPath.row];
cellImage.nameLabel.text = item.itemText;
cellImage.infoLabel.text = item.itemInfo;
cellImage.checkbox.userInteractionEnabled = YES;
cellImage.nameLabel.userInteractionEnabled = NO;
if(item.itemIsChecked.boolValue == YES) {
cellImage.checkbox.tag = indexPath.row;
[cellImage.tapGesture addTarget:self action:@selector(didSelectedImageAtIndexPath:)];
cellImage.checkbox.image = [UIImage imageNamed:@"checkbox-checked.png"];
} else {
cellImage.checkbox.tag = indexPath.row;
[cellImage.tapGesture addTarget:self action:@selector(didSelectedImageAtIndexPath:)];
cellImage.checkbox.image = [UIImage imageNamed:@"open-checkbox.png"];
}
return cellImage;
}