【问题标题】:iOS 7+ UITableView with 3 Different Prototype Cells of Varying HeightiOS 7+ UITableView 具有 3 个不同高度的原型单元
【发布时间】:2015-02-28 13:58:11
【问题描述】:

这应该很简单,但看来我需要联系并询问其他人是否遇到过这种情况......

我有一个针对 iOS 7+ 的 xcode 6 项目。我正在使用故事板和autolayout。我创建了一个UIViewController,放在UITableView 上,然后在UITableView 上放置了3 个不同的原型单元,每个单元都有不同的高度。每个 proto cell 都有自己的 UITableViewCell 类,UIElement 相应地链接。

这些原型单元格是在情节提要的 GUI 编辑器中设计的,每个单元格都有固定的高度。永远不会像这样长高:Using Auto Layout in UITableView for dynamic cell layouts & variable row heights

我不断发现的所有示例的问题是它们都使用单个原型单元格,并根据内容改变高度(即,他们使用UITextView 并根据文本的多少调整单元格高度在视图中)。

由于我的原型单元格已经在情节提要中设计,并且它们永远不会超过动态内容的设计高度,所以我要做的就是在将它们添加到表格时按照设计显示它们。

我在cellForRowAtindexPath 中使用switch 语句来根据indexPath.row 确定要使用哪个UITableViewCell 类。

我在一个数组中创建了一些虚拟数据,并使用它来构建一个包含 3 行的表格,以查看表格中呈现的 3 种类型的单元格中的每一种。

这一切都在 iOS8 上完美运行。然而,在 iOS7 上,我的三个单元格在视觉上最终都堆叠在一起。

为了咧嘴笑,然后我实现了一个heightForRowAtIndexPath 方法,并简单地使用一个开关来确定我正在处理的indexPath.row,然后返回原型单元格的高度(来自情节提要中显示的尺寸)设计师)。这应该是一种简单的硬编码方法,用于查看是否需要 heightForRowAtIndexPath 来解决问题。

同样,在 iOS 8 上运行良好,但在 iOS7 上,所有 3 个单元都堆叠在一起。

我想一个基本问题是:由于我使用的是故事板设计的原型单元,这些原型单元中的所有 UIComponent 都有固定的大小和约束,为什么这在 iOS 7 上不起作用?

我试图避免添加大量代码,只是让它在 iOS7 上工作。

【问题讨论】:

  • hmm...您是否尝试在不同大小的 iOS 7 设备/模拟器中运行该应用程序,并在情节提要上使用不同的十字准线对齐工具设置?这可能是罪魁祸首,当尺寸改变时你的对齐有问题。可能它在 iOS8 上正确显示只是因为 iOS8 足够聪明,可以为您纠正这些错误。我以前有类似的问题。所以,这只是我的猜测。希望这会有所帮助。
  • 每个单元格中的 UI 组件布局正确。问题是细胞是相互堆叠的。看起来您采用了三个不同的 UIView 并将它们设置为相同的 x/y 原点。它们不会像您期望的那样线性(一个接一个地)出现在表格中。
  • 直截了当的方法应该行得通,我曾经做过很多次,你能发布一些故事板的截图以及你如何配置这些单元格吗?

标签: ios xcode uitableview


【解决方案1】:

iOS7 不支持自定尺寸单元格,实现heightForRowAtIndexPath: 并返回正确的高度是正确的做法。

【讨论】:

  • 基于对此的研究,这也是我的假设。这就是我实现 heightForRowAtIndexPath 方法的原因。然而,这仍然会产生所有三个在视觉上堆叠在一起的单元格。我可以单步调试调试器并验证它是否正在调用应该为每种不同类型的单元格返回正确单元格高度的代码。不幸的是,它仍然无法在 iOS7 上运行,尽管我过去所做的一切以及我在网上找到的所有内容都表明它应该可以运行。
【解决方案2】:

您是否在 "tableView:heightForRowAtIndexPath:" 中计算高度?也许您应该尝试在“tableView:estimatedHeightForRowAtIndexPath:”中执行此操作,因为从故事板中取出单元格

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多