gpt4 book ai didi

ios - 当我实现 heightForRowAtIndexPath 时,UITableView 单元格相互重叠

转载 作者:行者123 更新时间:2023-12-01 17:49:46 27 4
gpt4 key购买 nike

我正在制作一个使用 UITableView 的新 iOS 项目。当我实现 heightForRowAtIndexPath 时,所有单元格都在彼此之上绘制,如屏幕截图所示。

cells on top of each other

如果我没有实现 heightForRowAtIndexPath 例程,则单元格会正常绘制(即使它们的高度不完全正确)。实现 heightForRowAtIndexPath 会触发过度绘制行为。

我之前已经多次实现表格和单元格,但没有看到这个问题。与我之前的项目相比,这个项目对我来说有两个新的东西是:

  • 我从 UIView 模板开始,它给了我一个 Storyboard作为 Root View 。显示问题的 View 是 Non-Storyboard View Controller 。我以前一直有一个 XIB 作为根。我不知道这是否或如何与此相关。
  • 这个项目启用了尺寸等级,在此之前我一直只使用 iPhone 或 iPad 目标项目。

  • 我会附上我的代码,即使它很无聊:
        -(float) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
    {
    return 44.0;
    }

    - (UITableViewCell *)tableView:(UITableView *)tableView
    cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
    static NSString *MyIdentifier=@"MyCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
    if (cell == nil)
    {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier];
    }

    cell.textLabel.text = @"Cell title";
    return cell;
    }

    有人有想法么?

    编辑:下面有人提到这不是给定代码的屏幕截图,这是真的。我将附上那个屏幕截图 - 这个屏幕截图是在模拟器中拍摄的,我已经将 table 拉了一些,这条线在 table 的最顶部。以这种方式分配的单元格很难捕捉到。其他人提到它看起来像单元格高度为 0,我相信这是真的。我只是不知道它是如何从 44 变为 0 的,我也不知道如何检查它。当我分配它时,单元格的边界/高度是 44(我知道通过我输入的一些调试代码)。

    我还编辑了代码,注意我根据建议调用了 initWithStyle - 这没有任何效果。

    screenshot 2

    最佳答案

    方法 -tableView:heightForRowAtIndexPath: 的正确返回类型是 CGFloat . CGFloat是 Core Graphics 和 UIKit (CocoaTouch) 的主要类型。 CGFloat不是 float . CGFloat是一种变为 float 的类型或 double (32 位或 64 位)取决于处理器架构。

    现在只有在 64 位架构上运行时才会出现问题( CGFloatdouble )。您的方法将返回一个 32 位浮点数(声明为返回 float),但调用者将从堆栈中读取 64 位(在协议(protocol)中,该方法声明为返回 CGFloat)。这种情况是不确定的,可能会导致多种行为。在您的情况下,生成的 64 位数非常小(不是零,而是接近零的十进制数),因此单元格将重叠。

    始终匹配函数/方法声明中的类型。

    关于ios - 当我实现 heightForRowAtIndexPath 时,UITableView 单元格相互重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34711682/

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