2016-06-21 5 views
1

Создание UITableViewCells, включающего элементы, программно, похоже, работает, за исключением ограничений. Или, может быть, так оно и есть. Каждый раз, когда ячейка снова появляется, те же ограничения будут добавлены к элементу. У меня будет 20 одинаковых ограничений, добавленных в uiLabel после прокрутки tableView. Вот мой sublcass (конденсированный):TableView Cells/Visual Format Language/Сохраняет добавление таких же ограничений?

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 я звоню FUNC configureCell внутри моей cellForRowAtIndexPath.

Есть ли способ проверить, существует ли существующее ограничение? Есть ли способ убедиться, что можно добавить только одно из моих ограничений? Или есть ли там человек с гораздо лучшим решением? Заранее спасибо.

+0

Да. Размещение работы addSubview и ограничений в инициализаторе. Благодарю. – Avenious

ответ

0

Существует источник данных для вашего tableView, когда вы настраиваете свою ячейку, вы отправляете модель ячейки в свою ячейку. Всякий раз, когда изменяется источник данных, модель ячейки, отправленная в ячейку, также изменяется. Итак, что вам нужно сделать, это переместить большую часть «addSubview» в инициализацию ячейки. Если вам нужно выполнить cell.contentView.addSubview с помощью модели ячейки. Вы должны судить, является ли модель ячейки, которую вы отправляете в ячейку, такая же, как и предыдущая. Если он равен, ничего не делайте, иначе сбросьте конфигурацию представления.

 Смежные вопросы

  • Нет связанных вопросов^_^