具有不同UITableViewCells和动态内容的UITableView

时间:2018-08-14 11:00:55

标签: ios swift uitableview

在我们的应用中,我们经常使用UITableViews在可滚动列表中显示不同的自定义UITableViewCells,方法是使用类型为数据源的显示项列表。然后,在TableView的{​​{1}}函数中,根据显示项的类型决定使用哪个自定义cellforRowAt

这种方法现在在UITableViewCell中引起了问题,该视图从Internet加载并显示图像,因为视图尚不知道图像的大小。

这是我要构建的自定义视图:see custom UITableViewCell

但是,我尝试仅从自定义视图中的图像开始。由于UITableViewCell行不知道图像的大小,因此在显示视图时不会显示任何图像。仅在向下滚动并向上滚动到应有图像的位置之后,单元格才按照我希望的大小进行调整。我将图像的顶部,顶部和底部约束设置为0,以便图像完全填充单元格。

加载图像并将其显示在此类单元格中并根据实际图像尺寸调整大小的最佳做法是什么?

在我设置的TableView

viewDidLoad

cellForRowAtIndexPath

tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 80

3 个答案:

答案 0 :(得分:0)

在配置表视图或加载视图时: 写下这些:

NUMERIC(36,10)

,或者如果您是从Storyboard / xib进行配置,则可以从那里进行设置。enter image description here请参见uitableview的设置。

答案 1 :(得分:0)

一种解决方案是在图像下载完成后重新加载该特定行(如果可见)。

tableView.reloadRows(at: [indexPathForRow], with: .none)

正如您所说的那样,在上下滚动增益后图像可以完美显示,我相信这种解决方案应该可以。

答案 2 :(得分:0)

最后找到了问题。我正在显示的数据是由演示者提供的,而不是最初提供的。这就是为什么在我拥有std::allocator<char>()之后打电话给它的原因。问题是我没有在主线程中显式调用该方法。

std::uses_allocator