TableView单元格/可视格式语言/保持添加相同的约束?

时间:2016-06-21 13:58:48

标签: swift uitableview visual-format-language

除了约束之外,以编程方式创建包含元素的UITableViewCell似乎正在工作。或者也许是。 每次单元格重新出现时,相同的约束都将添加到元素中。滚动tableView后,我将在uiLabel中添加20个相同的约束。这是我的sublcass(浓缩):

class TimeSlotCell: UITableViewCell {

let lblTime = UILabel()

var viewCons = [String:AnyObject]()
var previousCageView:UIView!
var myConstraints = [NSLayoutConstraint]()


func configureCell(row:Int,cageCount:Int) {

    lblTime.translatesAutoresizingMaskIntoConstraints = false
    self.addSubview(lblTime)

    placeConstraint("H:|-5-[time\(row)]", view:"time\(row)")
    placeConstraint("V:|-17-[time\(row)]", view: "time\(row)
} 

func placeConstraint(format:String, view:String) {
    viewCons[view] = lblTime
    let navViewConstraint = NSLayoutConstraint.constraintsWithVisualFormat(format, options: [], metrics: nil, views: viewCons)
            myConstraints += navViewConstraint
            NSLayoutConstraint.activateConstraints(myConstraints)
   }

在我的VC中,我在我的cellForRowAtIndexPath中调用configureCell函数。

有没有办法检查是否存在现有约束?有没有办法确保只能添加​​一个约束?或者有一个人有更好的解决方案吗?提前谢谢。

1 个答案:

答案 0 :(得分:0)

tableView有一个dataSource,在配置单元格时,将单元模型发送到单元格。每当dataSource更改时,发送到单元格的单元格模型也会更改。所以你需要做的就是移动大多数的addSubview'到细胞的初始化。如果你必须使用单元格模型进行cell.contentView.addSubview。您必须判断发送到单元格的单元格模型是否与前一单元格相同。如果它相等,则不执行任何操作,否则重置视图配置。