это все коды в моей демонстрации:
import UIKit
class TableViewController: UITableViewController {
var numberOfCell = 0
@IBAction func addAction() {
numberOfCell = numberOfCell + 1
tableView.reloadData()
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return numberOfCell + 1
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if indexPath.section == 0 {
if indexPath.row == 0 {
let cell = tableView.dequeueReusableCell(withIdentifier: "FirstCell", for: indexPath)
let addButton = cell.viewWithTag(99) as! UIButton
return cell
} else {
let cell = tableView.dequeueReusableCell(withIdentifier: "SecondCell", for: indexPath)
let deleteButton = cell.viewWithTag(100) as! UIButton
let textField = cell.viewWithTag(101) as! UITextField
return cell
}
} else {
return super.tableView(tableView, cellForRowAt: indexPath)
}
}
}
Я установил идентификатор ячеек в Инспекторе атрибутов в файле раскадровки, не зарегистрировал ячейки, все идет так:
Нажмите кнопку «Добавить», покажите новую ячейку с кнопкой и текстовым полем.
Но в моем проекте я использую то же самое, когда я нажимаю кнопку «Добавить», приложение вылетает,и сообщить об этой ошибке:
*** Завершение приложения из-за необработанного исключения «NSInternalInconsistencyException», причина: «невозможно заблокировать ячейку с идентификатором SecondCell - необходимо зарегистрировать перо или класс для идентификатора илиподключить ячейку прототипа к раскадровке '
Я пытался зарегистрировать ячейку, используя этот код:
tableView.register(UITableViewCell.self, forCellReuseIdentifier: "SecondCell")
Но если я это сделаю, приложение вылетит на let deleteButton = cell.viewWithTag(100) as! UIButton
иlet textField = cell.viewWithTag(101) as! UITextField
потому что их ноль.
Я думаю, что мой проект и демо не имеют различий, я не знаю, как решить эти проблемы.