OStack程序员社区-中国程序员成长平台

标题: ios - UITableView 分隔线在显示中不稳定 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 21:48
标题: ios - UITableView 分隔线在显示中不稳定

我有一个自定义 UITableViewCells 的表格 View ,当它们被触摸时会展开和收缩(以显示信息)。不幸的是,根据交互的位置,某些单元格的分隔符(在单元格框架的顶部/底部)会消失。它使它们看起来好像两个单元格合二为一。

以下是我认为相关的代码(如果需要更少/更多,请告诉我):

- (void) tableViewUITableView *)tableView didSelectRowAtIndexPathNSIndexPath *)indexPath {
    DynamicTableViewCell *selectedCell = (DynamicTableViewCell *)[tableView cellForRowAtIndexPath:indexPath];
    Trinomial *currentTri = [self.fetchedResultsController objectAtIndexPath:indexPath];
    switch (currentTri.cellDetailActive) {
    case YES:

        selectedCell.detailLabel.hidden = YES;
        [selectedCell setSelected:NO animated:YES];
        currentTri.cellDetailActive = NO;
        [tableView beginUpdates];
        [tableView endUpdates];

        break;
    case NO:

        selectedCell.detailLabel.hidden = NO;
        [selectedCell setSelected:NO animated:YES];
        currentTri.cellDetailActive = YES;
        [tableView beginUpdates];
        [tableView endUpdates];

        break;

    default:
        NSLog(@"Serious application error. BOOLEAN contains no value in -[tableView:didSelectRowAtIndexPath:]");
        break;
  }
}

这里是设置行高的方法:

- (CGFloat) tableViewUITableView *)tableView heightForRowAtIndexPathNSIndexPath *)indexPath {

Trinomial *tri = [self.fetchedResultsController objectAtIndexPath:indexPath];

if (!tri.cellDetailActive)
    return 55;
else
    return 110;
}

我的问题的图片发布在下面。过程是单元格拥有一个属性,该属性告诉是否显示详细信息,并且我使单元格高度发生变化(通过 -[beginUpdates:]-[endUpdates:]),然后根据最后的显示模式隐藏或取消隐藏某些 View 。

Missing separator between collapsed cells Missing separator between expanded cells Separator present between collapsed cells Separator present between expanded cells

如果我需要澄清/详细说明任何信息或提供任何其他 Material ,请告诉我。提前感谢您的帮助!

编辑: 不知何故,我将此方法的两个版本合并在一起,其中代码不正确。 -[tableView:didSelectRowAtIndexPath:] 应该如何工作是从核心数据获取结果 Controller 接收到一个对象,其中包含一个名为 cellDetailActive 的属性,该属性检查单元格是否扩大与否。该单元格没有 cellDetailActive 属性,抱歉。

编辑#2: 好的,我向 Apple Bug Reporter (#17295019) 提交了一个名为“表格 View 单元格分隔符随着单元格高度变化而消失”的错误。好吧,这个标题有点误导,因为 Apple 的开发人员回复我说因为 -[setSelected:animated] 直接在表格 View 单元格上被调用,所以我遇到了分隔符问题。相反,建议在我的 switch 语句中使用 [tableView selectRowAtIndexPath:animated:scrollPosition] 以及 [tableView deselectRowAtIndexPath:animated]



Best Answer-推荐答案


我认为这只是一个错误。我解决它的方法是将分隔符设置为 None 并绘制我自己的单元格背景,其中包括一条用作分隔符的线。

关于ios - UITableView 分隔线在显示中不稳定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23283032/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4