У меня есть табличное представление с двумя различными пользовательскими ячейками, как со своим уникальным идентификатором многократного использования. Мне нужно, чтобы каждый из них имел разную высоту. мой cellForRowAtIndexPath
выглядит следующим образом:Разные высоты для двух разных многоразовых ячеек в табличном представлении
//3
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath, object: PFObject!) -> PFTableViewCell? {
let PostObject = object as! Post
if PostObject["fichierimage"] as? PFFile == nil {
let cell2 = tableView.dequeueReusableCellWithIdentifier("cell10", forIndexPath: indexPath) as! cell0Entry
return cell2
}
else {
let cell = tableView.dequeueReusableCellWithIdentifier("cell9", forIndexPath: indexPath) as! cell4
return cell
}
}
Это работает правильно загрузить все данные в Tableview. Но высота обеих ячеек остается на уровне 481, тогда как высота первого должна быть 99. Я установил ее высоту до 99 в раскадровке, но я думаю, что высота таблицы tableView перекрыла ее. Я попробовал это в heightForRowAtIndexPath
, но это не сработало, он выдает ошибку и вылетает приложение:
override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
let object1 = objectAtIndexPath(indexPath)
let object2 = object1 as! Post
// this next line throws the error
if object2["fichierimage"] as? PFFile == nil {
return 99
}
else {
return 481
}
}
сообщение об ошибке говорит:
Нагрузочного приложение из-за неперехваченное исключение «NSRangeException», причина: «*** - [__ NSArrayM objectAtIndex]: индекс 2 за пределами [0 .. 1]
В инспекторе атрибутов попробуйте изменить содержание Tableview в «Статические клетки». Вы можете проектировать каждую ячейку отдельно. Также вы можете изменить высоту каждой ячейки, просто перетащив их в раскадровку. – Skywalker
Я пробовал это, но я использую PFQueryTableViewController, а не UITableviewController, поэтому я получил сообщение об ошибке «статические ячейки могут быть встроены только в UITableViewController» – joey