У меня есть табличное представление, в котором я хочу отображать две разные настраиваемые ячейки; однако он отображает только первую пользовательскую ячейку и ничего больше.
class messageThreadViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 2
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if section == 0 {
return finalItems.count
} else {
return finalItems2.count
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if indexPath.section == 0 {
let cell = tableView.dequeueReusableCell(withIdentifier: "message1") as! MyTableViewCellThread
cell.messagelabel?.text = finalItems[indexPath.row]
return cell
} else {
let cell2 = tableView.dequeueReusableCell(withIdentifier: "message2") as! MyTableViewCellThread2
cell2.messageLabel2?.text = finalItems2[indexPath.row]
return cell2
}
}
}
Опять же, отображается только «ячейка», а не «ячейка» и «ячейка2». Я провел много исследований и не смог найти кого-то с такой же проблемой. Спасибо за вашу помощь.
замените indexPath.section
на indexPath.row
в func cellforRowAt
, установите numberOfRowsInSection
: 2 и numberOfSections
: 1
кроме того, убедитесь, что вы зарегистрировали обе ячейки таблицы в viewDidLoad()
@Deitsch, да, он не пустой - я могу показать либо одно, либо другое, а не оба.
@DimitrisDelis Прошу прощения, потому что это могло быть неясно - numberOfRowsInSection варьируется в зависимости от содержимого «finalItems» и «finalItems2», поэтому я не могу установить его равным 2. Также я использую построитель интерфейса, поэтому у меня есть ячейки, зарегистрированные на раскадровка. Я обновлю пост, чтобы не было путаницы.
метод
func numberOfSectionsInTableView(tableView: UITableView) -> Int
не является частью UITableViewDelegate и не вызывается при построении пользовательского интерфейса tableView.
правильный метод использования
func numberOfSections(in tableView: UITableView) -> Int {
if section == 0 {
return finalItems.count
} else {
return finalItems2.count
}
}
Вы можете объяснить немного больше? заменяет ли это «func numberOfSectionsInTableView»? мне нужно добавить «раздел numberOfSections: Int», чтобы определить «раздел»?
Да, используйте его для замены numberOfSectionsInTableView
@psettle41 Метод numberOfSectionsInTableView, который вы используете, не является частью протокола UITableViewDelegate и не вызывается при построении таблицы
@Kstin спасибо за помощь, все заработало!
Вы уверены, что
finalItems2
не пусто?