【问题标题】:Why would cells overlap each other in UITableView?为什么 UITableView 中的单元格会相互重叠?
【发布时间】:2017-02-14 13:18:48
【问题描述】:

我的应用程序有数十个表格视图,它们都可以正常工作,除了一个相对较长的表格,如果我添加一个单元格作为最终单元格,它会因重叠而重复。

我检查了表格源,它有一个这种类型的单元格,为什么会重复?

我使用这种常用的方式来按名称调用单元格

let cell = tableView.dequeueReusableCellWithIdentifier(cellName, forIndexPath: indexPath)

所有刷新后,您可以看到一个“reportPlace” id,为什么所有这些重复。

items = [["similarPlace", "similarPlace", "similarPlace", "reportPlace"]]

--

免责声明:我检查了所有提到的类似问题的解决方案

【问题讨论】:

  • 让 cell = tableView.dequeueReusableCellWithIdentifier("Songcell", forIndexPath: indexPath)
  • 你的视图控制器代码可以吗?
  • 根据最后一个单元格检查单元格高度,如果您已采用自定义视图,则
  • MichaelRose:这是一个 2k 行的代码,我没有做任何不寻常的事情,它在其他视图中总是对我有用,我认为这是一个 xcode 错误... HimanshuMoradiya:我已经这样做了
  • @EricAya 指出,谢谢。

标签: ios swift uitableview


【解决方案1】:

解决方案:只确定一次高度。

我多次设置单元格的高度导致了这个问题:

self.tableView?.rowHeight   = 60.0
self.tableView?.rowHeight   = 100.0

我以为它会占用最后一个,但看起来每个都创建了一个单元格的实例。

另外,不要重新加载表格超过需要的次数。 并且不要更改cellForRowAtIndexPath 方法中的源数据。

【讨论】:

  • 我在 tableview-prepare-method 中设置了tableview.estimatedRowHeight,这让我很难解决这个问题。
【解决方案2】:

我遇到了同样的问题,不知道为什么会发生这种情况(y 位置设置错误),但我做了一个小“破解”,为我解决了这个问题

如果您以编程方式创建单元格,只需在单元格类的 init 中执行此操作:

override init(frame: CGRect) {
  let noProblemFrame = CGRect(x: 0, y: 0, width: frame.width, height: frame.height)
  super.init(frame: noProblemFrame)
}

否则在awakeFromNib中做同样的事情

override func awakeFromNib() {
   let noProblemFrame = CGRect(x: 0, y: 0, width: frame.width, height: frame.height)
   frame = noProblemFrame

【讨论】:

  • 谢谢,老实说我没有尝试过,为我解决的问题是我添加的答案。
【解决方案3】:

我尝试了以上所有答案,但除了 Sandu 的答案外,没有任何效果,这成功了!

// Working solutions, any value will do
self.tableView.estimatedRowHeight = 200

【讨论】:

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