gpt4 book ai didi

iphone - 使用 cellForRowAtIndexPath : method 修改现有的可重用单元格

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:16:13 25 4
gpt4 key购买 nike

我将 tableview 与可重复使用的单元格一起使用。在每个单元格上,我都有一个带有文本的 textField,我可以对其进行修改。如果文本为空,我会删除该单元格。

假设我们有 100 行,我们想要修改第 1 行:我们点击它,给出一个空字符串 @"",向下滚动到位置编号 50 并点击这个单元格。

现在我们检测到另一个单元格上的点击手势,我调用方法 textFieldDidEndEditing: 看看我是否应该从 tableview 中删除这个单元格。我使用 cellForRowAtIndexPath: 获取修改后的单元格。

问题是出现了其他带有空 textField 的单元格。我删除修改过的单元格,但只有一个。我认为这是可重复使用电池的问题。

谁能帮我解决这个问题?

- (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;
}

最佳答案

当您从第 1 行滚动到第 50 行时,已经存在的单元格将被重复使用 - 包括带有空 textField 的单元格。这就是为什么您多次看到它以及为什么您的删除例程只删除一个而不是全部。

听起来您在 cellForRowAtIndexPath 方法中创建的单元格需要修复以确保空文本字段不会自动复制到回收单元格。在看不到任何代码的情况下,这个练习就留给你了。

看了代码,谢谢。看不到任何“简单”的修复,因此建议您避免该问题。因此,与其检查单元格点击,不如检查列表滚动。

您遇到的问题仅是因为正在编辑的单元格由于用户滚动列表而被回收。因此,通过 a) 不要让用户在编辑文本时滚动或 b) 在用户开始滚动时停止文本编辑来解决这个问题。

关于iphone - 使用 cellForRowAtIndexPath : method 修改现有的可重用单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14725874/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com