2014-12-01 3 views
1

Я пытаюсь применить строку в середине моего контейнера1 после применения ограничений. Проблема в том, что средняя строка применяется дважды в каждой строке. Кажется, что метод layOutSubviews выполняется дважды для каждой строки, и я довольно смущен почему.? МетодTableViewCell вызывается дважды

layOutSubviews в моей пользовательской ячейке

override func layoutSubviews() { 
    super.layoutSubviews() 
    println(self.container1?.frame.height) 

    var middleLine1:UIView = UIView(frame: CGRectMake(self.container1!.frame.origin.x, self.container1!.frame.origin.y+(self.container1!.frame.height/2), 10, 1)) 
    middleLine1.backgroundColor = UIColor(rgba: "#cccac8") 
    self.addSubview(middleLine1) 



} 

Println это выполняется до ограничений и после того, как на каждой ячейке?

Tableview делегат Methdos

func numberOfSectionsInTableView(tableView: UITableView!) -> Int { 
    return 1 
} 

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 



    return 1 

} 


func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 



    var cell = tableView.dequeueReusableCellWithIdentifier("BracketCell") as? BracketCell 

    cell?.selectionStyle = UITableViewCellSelectionStyle.None 





    return cell! 





} 

ответ

2

Ваш layoutSubviews реализация должна быть idempotent. Его можно вызывать каждый раз, когда изменяется вид frame. Вы не должны добавлять subview в этот метод. Вместо этого добавьте subviews в метод init и установите их фреймы в layoutSubviews.

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