Swift-Tableview中的单元格出现在另一个单元格上方

时间:2018-12-30 15:59:56

标签: ios swift uitableview tableview

我正在制作一个简单的表视图。

我面临的问题是,当我上下滚动时,另一个单元格出现了。

看下面的2张图像。

enter image description here

在这里,您会看到该单元格出现在顶部,并且计数器不为零,如第一个单元格一样。您还可以看到该颜色具有较深的颜色。 enter image description here

代码如下:

 override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
 return 200
 }

 override func numberOfSections(in tableView: UITableView) -> Int {

 return 1
 }

 override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

 return 10
 }


 override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
 let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) //as! ArrangementCell


 let card = CardHighlight(frame: CGRect(x: cell.bounds.origin.x + 30, y: cell.bounds.origin.y + 10, width: cell.bounds.width - 60 , height: (cell.bounds.width + 40)/2.6282051282))
 card.backgroundColor = UIColor(red: 0, green: 94/255, blue: 112/255, alpha: 0.1)
 card.title = String(Counter)
 card.hasParallax = true
 card.shadowOpacity = 0.6
 card.shadowBlur = 7
 card.cardRadius = 7


 Counter = Counter + 1

 let cardContentVC = storyboard!.instantiateViewController(withIdentifier: "CardContent") as! DetaljertArrangement
 card.shouldPresent(cardContentVC, from: self, fullscreen: false)

 cell.contentView.addSubview(card)


 return cell
 }

如何预防此问题?

2 个答案:

答案 0 :(得分:1)

因为细胞将其出队

cell.contentView.addSubview(card)

保持在每个滚动中添加新标签,因此您需要创建一个原型单元格/ xib,其中标签被标记为出口,并更改其文本

答案 1 :(得分:0)

您的问题似乎是此行cell.contentView.addSubview(card)。您要在旧视图上添加新的内容视图,而不删除旧视图。您可以尝试制作一个已经添加了CardHighlight的UITavleViewCell子类,而只需更新其标题和VC。

DequeueCellAtIndexPath回收旧单元(最初仅创建新单元),因此在滚动时,您将使用已设置的旧单元。