1

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

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 函数。

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

4

1 回答 1

0

您的 tableView 有一个数据源,当您配置单元格时,您将单元格模型发送到您的单元格。每当 dataSource 发生变化时,发送到 cell 的 cell 模型也会发生变化。因此,您需要做的是将大部分“addSubview”移动到单元格的初始化中。如果您必须对单元格模型执行 cell.contentView.addSubview。你要判断你发给cell的cell型号是否和之前的一样。如果相等,则什么也不做,否则重置视图配置。

于 2016-06-21T15:36:32.730 回答