2015-03-25 2 views
0

Как установить высоту на основе содержимого, имеющего несколько пользовательских UITableViewCell?быстрый способ установки динамической высоты при наличии нескольких пользовательских UITableViewCells

Это, как я пытался:

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat 
{ 
var currentCell:UITableViewCell? = tableView.cellForRowAtIndexPath(indexPath) 
println("reuseIdentifier: \(currentCell?.reuseIdentifier)") 

currentCell?.layoutIfNeeded() 

let height: CGFloat = currentCell?.contentView.systemLayoutSizeFittingSize(UILayoutFittingCompressedSize).height as CGFloat! 
let separatorHeight:CGFloat = 1 

return height + separatorHeight 
} 

, но он выходит из строя, так как я не могу получить текущую ячейку.

+0

он выходит из строя, потому что 'cellForRowAtIndexPath' фактически называет' heightForRowAtIndexPath', вы создаете цикл , Почему вы это делаете? – bontoJR

+0

@JuniorB .: Я знаю, что он падает. На самом деле я хочу получить reuseIdentifier ячейки и установить высоту ячейки на основе содержимого –

+0

Поддерживаете ли вы только iOS 8? – Isuru

ответ

0

В cellForRowAt набор Tableview accessibilityHint

func tableView(_ tableView: UITableView, cellForRowAt indexPath: 
    IndexPath) -> UITableViewCell { 

    tableview.accessibilityHint = NUMBERINPUT 

    self.tableview.register(textFieldNib, forCellReuseIdentifier: 
    TEXT_FIELD_CELL_IDENTIFIER) 

    let cell = tableview.dequeueReusableCell(withIdentifier: 
    TEXT_FIELD_CELL_IDENTIFIER, for: index)as! TextFieldTableViewCell 

    return cell 

} 

В heightForRowAt проверить accessibilityHint и отрегулировать высоту пользовательских UITableViewCell

func tableView(_ tableView: UITableView, heightForRowAt indexPath: 
IndexPath) -> CGFloat { 

    if tableView.accessibilityHint == NUMBERINPUT{ 

     return 500 

    }else{ 

     return 100 

    } 

}