swift - TableView 单元格/视觉格式语言/不断添加相同的约束?

标签 swift uitableview visual-format-language

以编程方式创建包含元素的 UITableViewCells 似乎可以正常工作,但有一些限制。或者也许是。 每次单元格重新出现时,相同的约束将添加到元素。滚动 tableView 后,我将 20 个相同的约束添加到 uiLabel。这是我的 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 函数。

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

最佳答案

您的 tableView 有一个数据源,当您配置您的单元格时,您将单元格模型发送到您的单元格。每当数据源更改时,发送到单元格的单元格模型也会更改。所以你需要做的是将大部分'addSubview'移动到单元格的初始化。如果您必须对单元格模型执行 cell.contentView.addSubview。你要判断你发给cell的cell model和之前的是不是一样。如果相等,什么也不做,否则重置 View 配置。

关于swift - TableView 单元格/视觉格式语言/不断添加相同的约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37946540/

相关文章:

ios - 中心 View 使用*仅*视觉格式?

swift - 仅从模块导入特定扩展

ios - 强制WKWebView显示移动版本

ios - UITableViewCell 子类

ios - 为什么子 TableView Controller 对触摸和滚动没有响应?

ios - 尝试在 Swift 上继承 UITableViewCell

ios - “Width equals height” 使用视觉格式语言的约束

我的 View Controller 中的 iOS 7 视差效果

ios - 将变量放在 AppDelegate 中是 Swift 中静态变量的解决方法吗?

ios - 自动布局错误 Unable to simultaneously satisfy constraints with UIScrollView