UITableView - 在编辑模式下重用单元格

Posted

技术标签:

【中文标题】UITableView - 在编辑模式下重用单元格【英文标题】:UITableView - reusing cells while in editing mode 【发布时间】:2013-06-19 20:19:42 【问题描述】:

我发现如果您将表格视图设置为编辑模式,则在删除一行后滚动表格时,单元格编辑控件(左侧的红色减号)处于随机状态(变为垂直或水平)滚动表格时在其余单元格上。大概是因为我正在重用这样的单元格:

cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

如何强制编辑控件处于每个单元格的正确状态?除非我点击它删除一个单元格,否则它应该始终处于默认水平状态。

编辑:这是单元格代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
    static NSString *cellIdentifier = @"WhateverIdentifier";
    MyCell *cell = nil;

    //This IF statement fixes the problem, but then I'm not reusing the cells
    if (!tableView.isEditing) 
        cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
    

    if (!cell) 
        cell = [[[NSBundle mainBundle] loadNibNamed:@"MyCell" owner:self options:nil] objectAtIndex:0];

    

    //customize cell

    return cell;

【问题讨论】:

你能发布更多关于你的代码的细节吗? 发布了问题的更新。 MyCell* 类有自定义的东西吗? 一张图片和一个文字标签。 有什么解决办法吗?我在两个不同的项目中看到了同样的事情 【参考方案1】:

您是否在自定义单元格的方法prepareForReuse 中调用[super prepareForReuse]

这解决了我的问题。

【讨论】:

AGGGGHHHHHHHHHH 我花了两个星期看这个!!!!!!感谢您的快速解决方案。 谢谢,完美的解决方案;)【参考方案2】:

我刚刚签入了一个方便的 UITableView,但我没有看到这个问题。我正在使用 dequeueReusableCellWithIdentifier: 就像你一样(当然没有 if 语句)。您是否正在通过滑动或删除多行或其他方式做一些特别的事情?

(我会对此发表评论,但目前还不能。一旦你解决了你的问题,我会删除它。)

【讨论】:

以上是关于UITableView - 在编辑模式下重用单元格的主要内容,如果未能解决你的问题,请参考以下文章

如何在编辑模式下在 UITableView 中添加额外的单元格?

UITableView 单元格行为不端,显示没有披露等等

UITableView 单元格中的可重用单元格存在问题

Swift - uitableview 重用单元格时用户输入混淆?

通过单元格重用错误绘制的 UITableView 分隔符?

单元格重用后 UITableView 不更新 UIButton