#ios #swift #tableview #swift4
#iOS #swift #просмотр таблицы #swift4
Вопрос:
У меня есть tableview, и я загружаю данные из firebase, после этого я перезагружаю tableview, но я также хочу добавить в tableview еще одну ячейку. Например, количество моих данных равно шести, и я хочу добавить во вторую строку и пятую строку разные ячейки. В конце я хочу показать восьмую ячейку.
Я попробовал этот код;
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return data?.count ?? 0
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if indexPath.row == 1 {
let cell = myTableView.dequeueReusableCell(withIdentifier: "makeLiveWallpaper") as! LiveWallTableViewCell
if indexPath.row == 1 {
cell.titleLabel.text = "Let's make LiveWallpaper"
}
return cell
}else{
if let cell = myTableView.dequeueReusableCell(withIdentifier: "CategoryTableViewCell", for: indexPath) as? CategoryTableViewCell{
cell.category = category(at: indexPath)
cell.delegate = self
cell.setScrollPosition(x: offsets[indexPath] ?? 0)
return cell
}
}
return UITableViewCell()
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if indexPath.row == 1 {
return 140
}else{
return 255
}
}
Но это не добавление новой ячейки, это оконченная запись в ячейку
Ответ №1:
Как только вы получите данные, обновите свой источник данных, как указано ниже:
data.insert("", at: 1)
data.insert("", at: 4)
self.tableView.reloadData()
обновите свой метод источника данных
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if indexPath.row == 1 {
// your custom Cell
return cell
} else if indexPath.row == 5 {
// you custom Cell
return cell
} else {
// normal cell
}
return UITableViewCell()
}
Надеюсь, это поможет вам.
Комментарии:
1. но данные поражены, в них говорится «Не удается преобразовать значение типа ‘String’ в ожидаемый тип аргумента ‘Category'»
2. @SadiHakan «» здесь для примера вы должны добавить свой объект категории в массив.