问题标签 [heightforrowatindexpath]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
79 浏览

uitableview - heightForRowAtIndexPath 和 UITableView scrollToBottom 的初始加载性能不佳

我有一个 UITableView,它通过适当的机制(使用 FetchedResultsController 等)从 CoreData 读取信息。此信息可以是文本信息,也可以是要加载到 tableview 中的本地图像的 URL。

数据需要以自下而上的方式填充到表中(类似于消息传递应用程序)。我的目标是 iOS 8+,但如果我使用estimatedHeightForRowAtIndexPath,我会在 3+ 多行标签和图像上得到可怕的抖动。除非它是单行 UILabel,否则估计似乎太远了。我的预感是细胞高度是以自上而下的方式估计的,因此细胞高度从细胞顶部到细胞底部增长。这意味着从上到下滚动很好,但从下到上不是,因为当我向上滚动时,单元格正在“向下”动态调整大小。

我目前正在使用 heightForRowAtIndexPath 来计算单元格高度。这样做的问题是,最初加载视图需要很长时间,因为单元格高度都是一次计算的。我正在使用单元格高度缓存来存储单元格高度,以便在加载视图后,滚动非常流畅。

所以我的问题是:如何使用 heightForRowAtIndexPath 而不需要 3-5 秒的初始加载?

并跟进奖金问题,当您的单元格高度差异很大时,有什么方法可以可靠地使用estimatedHeightForRowAtIndexPath?我们说的是从 44px 到 300px 的任何地方。从我读到的内容来看,在这种情况下我根本无法使用estimatedHeight 计算。

我已经用尽了关于estimateHeight/heightForRowAtIndexPath 的所有stackoverflow 帖子,现在我开始不止一次地查看相同的帖子。所以我被困住了。

0 投票
3 回答
6519 浏览

objective-c - 以编程方式动态更改单元格高度

我已经尝试了很多关于 SO 的答案,但没有真正奏效。我可能做错了什么,所以我需要有人指出我做错了什么..

我得到“NSInvalidArgumentException”,原因是“NSConcreteAttributedString initWithString:: nil value”,因为 self.cell.comment.text 在我设置单元格高度时没有得到任何东西,但它确实在调用 heightForRowAtIndexPath 时没有。

许多人对该答案发表了评论,认为这种方法效果很好,所以我想我错过了什么?

编辑

我在这里设置 self.cell.comment.text -

0 投票
1 回答
302 浏览

ios - 如何确定 heightForRowAtIndexPath 方法中单元格的重用标识符?

我有两种不同类型的细胞。我需要在方法中为它们中的每一个分配不同的大小:

如何确定细胞类型?也许得到它的重用标识符等。

更新 当我尝试这个

我收到一个例外 在此处输入图像描述

0 投票
2 回答
496 浏览

ios - 只为一个tableView设置行高并忽略heightForRowAtIndexPath中的其他tableView?

我有一个带有一个 TableView 的 TableViewController,它的行通过自动布局动态设置。

我在控制器中添加了另一个用于菜单的 TableView。它的行高需要设置为 65。

问题在于heightForRowAtIndexPath。我知道如何只为这个 tableView 菜单的行返回 65。但我不确定如何让自动布局为另一个 tableView 做这件事。

有谁知道我怎么能做到这一点?

这是我的代码:

0 投票
1 回答
1486 浏览

ios - UITableView 上的单元格高度缓存和 [sizeToFit] *有时* 显示错误的高度

问题:我遇到一个问题,使用estimatedHeightForRowAtIndexPath 和heightForRowAtIndexPath 计算的单元格高度返回错误的高度。具体来说,有时单行文本标签的高度会返回与贴纸相同的高度(高度太大)。或者,图像最终与单行文本标签的高度相同(高度太小)。

理论:我根据消息的类型使用不同的单元格高度。由于有时文本显示为与贴纸相同的高度(固定高度为 150),我想知道在重新使用单元格的地方是否存在错误。或者,我从单元高度缓存中保存/读取的方式存在错误。

奖励: 我至少花了一个月的时间试图弄清楚发生了什么。这不是一个容易的问题。您将收到我永恒的感激之情,以及我可以添加的赏金。

这是一些上下文的代码。一、heightForRowAtIndexPath:

此外,为了让多行标签起作用,我必须在自定义单元格类中设置一个 preferredMaxLayoutWidth:

这是我对单元高度缓存的实现。注意,cachedCellHeights 只是一个合成的 NSDictionary:

请注意,估计的HeightForRowAtIndexPath 和heightForRowAtIndexPath 使用相同的代码。我知道您不应该在estimatedHeight 中进行任何繁重的计算。但是,由于我是从底部堆叠单元格并且它们的高度可能变化很大,因此我必须进行此计算(或从缓存中读取)。否则滚动到底部功能不起作用(它将滚动放置在它认为结束的位置是基于错误的估计高度计算,这是一些没有意义的随机点)。

一个解决方案或任何意见或建议将不胜感激。

0 投票
1 回答
419 浏览

ios - UITableView 滚动时卡顿和跳跃

我正在使用带有动态单元格的 UITableView。每个单元格都有一些按钮、一个图像和一个标签。图像的宽度等于 tableview 的宽度,高度是可变的。

我正在通过函数更新 cellForRowAtIndexPath 中图像的高度...以尊重纵横比。标签可以有 1 行或多行。

我正在使用 heightForRowAtIndexPath 来设置单元格的高度。我在那里计算并返回值。

我不知道为什么当我滚动时表格有点迟钝和跳跃。

0 投票
2 回答
566 浏览

ios - heightForRowAtIndexPath 永远不会被称为 iOS9

好吧,我很确定这个方法一直执行到现在我的UITableViewController. 我的方法中有打印语句,如下所示:

我已将方法标头复制到我的.h文件中,并已正确设置委托:

在我的viewDidLoad:方法中。为什么我heightForRowAtIndexPath根本没有被叫到?

0 投票
1 回答
409 浏览

ios - 无法同时满足静态表的约束

我有一个有两行的静态表。第一排有开关。我只想在开关打开时启用第二行。并在开关关闭时隐藏该行。

第二行有标签和文本字段。它们都有自动布局约束。

我正在硬编码第二行的高度,如下所示

它做我想做的事,但我收到以下错误/警告。

无法同时满足约束。以下列表中的至少一个约束可能是您不想要的。

我知道我可以直接隐藏该行,而不是创建零高度行。但它在桌子上留下了很大的空白。我不想那样做。我想创建零高度行,但我也想删除警告。

0 投票
2 回答
769 浏览

ios - heightForRowAtIndexPath 被调用,但高度没有改变

我有一个名为 myTableView 的 UITableView。我想让 tableView 做的事情其实很简单。如果用户点击一个单元格,它应该展开,换句话说,tableView 是手风琴。这部分对我来说很好,但我也希望当用户点击 mapView 上的标记时单元格展开(我正在使用 Mapbox)。标记的标题以数字结尾,我使用这个数字来确定应该扩展哪个单元格。因此,我从标题字符串中获取数字并创建一个以数字为行的 NSIndexPath(称为 localIndexPath)。之后,我手动选择相应的单元格:

之后,我通过以下方式调用 didSelectRowAtIndexPath:

然后调用 heightForRowAtIndexPath,这两种方式都成功调用,但实际高度仅在我单击单元格时发生变化,而不是在我单击标记时发生变化。我的问题是为什么会这样,我怎样才能让它双向工作?

以下是所有相应方法的代码:

很抱歉用德语打印,但我认为你可以弥补它们的意思(ist = is,für = for,höhe von = height of)。

这是我点击第二个单元格时的日志,这工作正常,单元格按我的意图扩展,即使高度显示为 44:

这是我点击注释时的日志,单元格没有在视觉上扩展:

提前感谢,对不起我的英语不好!

0 投票
3 回答
732 浏览

ios - heightForRowAtIndexPath 间歇性崩溃

我有一个有大约 30 个活跃用户和 500 多个注册用户的应用程序,这个问题只发生在一个使用 iPhone 6 的 9.2 用户身上。

我可以从崩溃报告中看到她已经发生了 60 多次崩溃,她说问题有时还可以,而其他情况则不然。

我在这里有相同的测试设备,没有发生任何问题。

我无法从fabric 的崩溃报告详细信息中获得太多信息,但是崩溃发生在以下方法中,并且应用程序在此方法的最后一个else处崩溃,我可以从她对问题的描述中看出:

对于那些想知道的人,我需要计算高度以避免在使用表格视图自动尺寸时发生的抖动滚动。所以我只需要在这里解决问题而不是切换方法。

来自 crashlytics 的一些信息:

和 heightForView 函数:

更新代码,检查 nil,仍然为用户崩溃: