为什么在UITableView中单元格会相互重叠?

时间:2017-02-14 13:18:48

标签: ios swift uitableview

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

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

我使用这种常用方法按名称调用单元格

let cell = tableView.dequeueReusableCellWithIdentifier(cellName, forIndexPath: indexPath)
毕竟刷新后,你可以看到一个" reportPlace" id,为什么所有这些重复。

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

-

disaster

  

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

3 个答案:

答案 0 :(得分:3)

解决方案:仅确定一次身高。

我正在多次设置单元格的高度导致此问题:

def answer_eight():
    counties=census_df[census_df['SUMLEV']==50]
    # this is wrong you're passing the df here multiple times
    regions = counties[(counties[counties['REGION']==1]) | (counties[counties['REGION']==2])]
    # here you're doing it again
    washingtons = regions[regions[regions['COUNTY']].str.startswith("Washington")]
    # here you're doing here again also
    grew = washingtons[washingtons[washingtons['POPESTIMATE2015']]>washingtons[washingtons['POPESTIMATES2014']]]
    return grew[grew['STNAME'],grew['COUNTY']]

我认为它将采用最后一个,但看起来每个人都会创建一个单元格的实例。

另外,不要重新加载表格超过需要的次数。 并且不要使用def answer_eight(): counties=census_df[census_df['SUMLEV']==50] regions = counties[(counties['REGION']==1]) | (counties['REGION']==2])] washingtons = regions[regions['COUNTY'].str.startswith("Washington")] grew = washingtons[washingtons['POPESTIMATE2015']>washingtons['POPESTIMATES2014']] return grew[['STNAME','COUNTY']] 方法更改源数据。

答案 1 :(得分:1)

我遇到了同样的问题,并且无法确定为什么会发生这种情况(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

答案 2 :(得分:0)

我尝试了上述所有答案,但除了 Sandu 的答案外,没有任何效果对我有用,那就是诀窍!

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