具有动态高度的tableview(每个部分)内的奇怪挑战UIScrollView

Posted

技术标签:

【中文标题】具有动态高度的tableview(每个部分)内的奇怪挑战UIScrollView【英文标题】:Strange Challenge UIScrollView inside tableview (each section) with dynamic height 【发布时间】:2013-01-31 12:48:50 【问题描述】:

感谢您帮助我度过难关。

这完全是一个不同的挑战,我想显示类似于 tableview 使用的部分标题,并且我必须在每个部分中使用滚动视图。

我有大约 4-5 个部分,但是这些部分的内容和它们本身是动态的,如果没有数据则不会显示,如果有任何数据则显示一个部分及其相应的数据,但我有一个每个部分(1 行中的 1 行)的滚动视图,其 contentSize 基于内容是动态的(在我的情况下,这些是不同高度的动态图像)。

那么用新高度更新节行的最佳方法是什么,或者用新高度更新行单元格并相应地更新我相信的表格的内容大小的最佳方法是什么。

非常感谢,

雷诺·琼斯

【问题讨论】:

【参考方案1】:
-(CGFloat)tableView:(UITableView*)tableView heightForHeaderInSection:(NSInteger)section return calculatedHeight:

使用此 UITableView 委托方法来传递节标题的高度。

但是你需要重新加载 tableview 才能调用这个函数。

最好的问候。

【讨论】:

不,兄弟,这不是正确的解决方案,如果它那么容易,那么我早就做到了。滚动视图的内容不是文本,而是图像,其矩形不属于我,它们会动态添加到滚动视图中。 :) 不过谢谢.. :) 希望大家在设置scrollview的contentSize的时候,能找到section header的高度。一旦你发现你可以重新加载 tableview 并将 contentSize.height 作为该特定部分的高度传递。【参考方案2】:

你需要重写uitableview的几个方法

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section

在 viewForHeader 方法中,您可以创建一个单独的 .nib 文件,将其作为视图获取并正确配置数据以作为标题返回。并计算当然的高度

当然是

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

再次,创建一个单独的 .nib 文件作为您的单元格视图,您可以简单地将滚动视图拖放到其中。并且您必须考虑要在单元格中显示的数据来计算高度

【讨论】:

Brother 一切都很酷,但是在创建单元格(部分)之前我没有数据,我有要在不同部分显示的图像(滚动视图)并且所有内容的大小都是动态的。 我想我不明白你在说什么。您必须在显示表格之前提供数据源。如果之后更改数据源,则需要在 table 上调用 reload。动态数据意味着您必须计算并正确定位单元格中的控件,例如隐藏一个或其他。单元格 .xib 文件应作为模板提供。如果一行数据完整且正常,那么模板就是好的。如果没有,则需要根据行数据对模板中的控件进行隐藏、上移或缩放

以上是关于具有动态高度的tableview(每个部分)内的奇怪挑战UIScrollView的主要内容,如果未能解决你的问题,请参考以下文章

更改集合内的 tableview 标题高度

如何在 iOS 中创建具有动态 tableview 高度的动态 tableview 单元格

Swift:tableView 行的高度,其 tableView 单元格具有动态行数的嵌套 tableView

具有多行 UILabel 的自定义 Tableview 单元格需要动态高度

具有动态标签高度的 IOS Tableview 自定义单元格

UITableView:如何知道 TableView 的所有具有动态单元格高度的单元格何时被调整大小?