以编程方式将视图添加到tableView单元格中,使滚动生涩和缓慢

时间:2017-09-27 06:37:31

标签: ios swift performance uitableview scrollview

以编程方式将视图添加到tableView单元格中,使滚动生涩和缓慢。我将以编程方式将视图添加到委托函数" CellForRowAt"中的单元格中。我通过委托功能尝试了它#34; WillDisplay"但结果是一样的。 实现这一目标的最佳解决方案是什么?

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
       let cell = tableView.dequeueReusableCell(withIdentifier: 
       "cell", for: indexPath) as! CustomCell
       addViewsInCell(cell: cell, indexPath: indexPath)
       return cell
}

func addViewsInCell(cell: CustomCell, indexPath: IndexPath) {
      //here i am adding some views programmatically
      for i in 0..<3 {
           let customView: CustomView = Bundle.main.loadNibNamed("CustomView", owner: self, options: nil)![0] as! customView
           cell.customViewPlacement.addSubview(customView)
      }
}

2 个答案:

答案 0 :(得分:0)

重复使用单元格视图。每次在cellForRowAt indexPath:中添加子视图时,您最终都会获得同一子视图的多个副本。相反,您应该检查是否已添加该子视图。您可以使用标记标记子视图,然后使用viewWithTag方法测试其存在。

答案 1 :(得分:0)

不要在tableView: cellForRowAt indexPath:中添加任何子视图/自定义视图。这将导致在表视图加载该单元格时重复添加这些子视图。而是创建UITableViewCell的子类,如果您以编程方式工作,则在该子类内创建子视图。或者,如果您正在使用故事板,则可以创建动态原型单元格。