#ios #uitableview #swift #sigabrt
#iOS #uitableview #swift #sigabrt
Вопрос:
У меня есть этот код, который я скопировал из приложения MasterDetail по умолчанию, но когда я запускаю программу, она останавливается на строке с объявлением ячейки. И я понятия не имею, почему.
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as UITableViewCell
let object = objects[indexPath.row].title as String
cell.textLabel.text = object
return cell
}
Ответ №1:
-
Вы не зарегистрировали ячейку для использования в табличном представлении
Я надеюсь, вы забыли это сделать.
self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "Cell")
-
Если вы не зарегистрировали ячейку для tableview, то она может вернуть nil в ячейку.
Apple заявляет
let == Constant
var == variable values at any time
Итак, используя? будет рассматриваться как необязательный
у вас должно быть вот так
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "Cell")
}
func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
var cell:UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath)
//OR
//var cell:UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("Cell") as? UITableViewCell
//Your stuff
return cell
}
Ответ №2:
Согласно этому руководству от Apple, вы можете захотеть проверить табличный вид на панели раскадровки.
Найдите инспектор атрибутов для табличного представления и убедитесь, что для поля «содержимое» установлено значение «Динамические прототипы». Обновление этого исправило это для меня.
Кроме того, пока у вас открыт доступ, убедитесь, что в табличном представлении есть одна ячейка таблицы, и убедитесь, что в поле «Идентификатор» установлено значение, указанное вами при tableView.dequeueReusableCellWithIdentifier
вызове метода (в вашем случае «ячейка»)