• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - UITableView 分隔线在显示中不稳定

[复制链接]
菜鸟教程小白 发表于 2022-12-12 21:48:42 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我有一个自定义 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/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap