2016-03-05 4 views
1

Я определил пользовательский UITableViewCell, используемый в UITableViewController, который отображается в моей таблице. Проблема заключается в том, что ячейка сохраняет исходную высоту, как UITableViewCell по умолчанию, вместо того, чтобы использовать высоту, указанную в «Инспекторе размеров» -> «ячейка таблицы» -> «высота строки».Регулировка высоты ячейки для каждого пользовательского UITableViewCell?

Мой заказ клетка загружается следующим образом:

tableView.registerNib(UINib(nibName: "CustomTableViewCell", bundle: nil), forCellReuseIdentifier: "Cell") 

, а затем в функции Tableview:

let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! CustomTableViewCell 
cell.titleLabel?.text = "title text" 
cell.detailTextLabel?.text = "detail text to go here" 

Я попытался вручную настройку высоты следующим образом, но это не работает, либо:

cell.frame.size.height = 100.0 

Любые идеи о правильном способе иметь ячейку на правильной высоте?

XCode 7.2.1, IOS, 9

ответ

4

Если ваши данные ячейки таблицы являются статическими и имеют одинаковую высоту для каждой ячейки, переопределите эту функцию (если вы используете подкласс UITableViewController), чтобы вернуть высоту вашей ячейки.

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
    return 100.0 
} 

В противном случае, если данные является динамическим, и вы хотите, каждая ячейка иметь свою собственную высоту, установите в viewDidLoad метод:

tableView.estimatedRowHeight = 44.0 
    tableView.rowHeight = UITableViewAutomaticDimension 

Не забудьте применить ограничение для всех представлений (например, UILabel, UIImageView и т. Д.), Чтобы позволить tableView автоматически вычислять и изменять размер ячейки.

0

Высота строки является свойством таблицы. В вашей таблице контроллера представления viewDidLoad, вероятно, именно там, где вы уже сказать:

tableView.registerNib(UINib(nibName: "CustomTableViewCell", bundle: nil), forCellReuseIdentifier: "Cell") 

также сказать:

tableView.rowHeight = 100 
0

Set

TableView.estimatedRowHeight 

Чтобы что-то значимое

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

Не используйте RowHeight или связанные функции делегата/источника данных

0

В Obj C, вы можете реализовать эту функцию в UITableViewController подкласса:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ 
    return 100; // or whatever your cell height is 
} 

может быть существует эквивалент в Swift