#ios #swift #tableview
#iOS #swift #tableview
Вопрос:
У меня есть tableview с 4 строками, и при нажатии на 4-ю строку я хочу перейти к другому viewcontroller. Это то, что я написал в didSelectRow..
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if indexPath.row == 3 {
let groupListViewController = Bundle.main.loadNibNamed(String(describing: GroupListViewController.self),
owner: self,
options: nil)?[0] as! GroupListViewController
self.navigationController?.pushViewController(groupListViewController, animated: true)
}
}
Но при нажатии на строку происходит сбой в этой строке с ошибкой Unexpectedly found nil while unwrapping an Optional value
:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell: ShareOptionsTableViewCell = tableView.dequeueReusableCell(withIdentifier: cellID) as! ShareOptionsTableViewCell //CRASH HERE
....
...
return cell
}
Что происходит не так …?
Комментарии:
1. Проверьте,
groupListViewController
естьnil
это или нет.2. Это
cellForRowAt
внутриGroupListViewController
?3. Вы зарегистрировали перо в TableView для CellID?
4. не могли бы вы добавить ошибку из журнала?
5. Я не зарегистрировал перо.. Это была проблема .. 🙂 . Спасибо, ребята..
Ответ №1:
Как я и думал, Nib
который вы назвали, отличается от вашего файла GroupListViewController.swift, и он выходит из строя, когда вы пытаетесь развернуть groupListViewController
который не может быть найден с этим именем.
В этом случае вы могли бы перепроверить имя вашего Nib
или вашего Swift-файла GroupListViewController.swift и, чтобы предотвратить сбой, вы могли бы использовать guard
для проверки nil
перед использованием.
guard let viewController = Bundle.main.loadNibNamed("NameOfTheNib", owner: nil, options: nil)?.first else {
print("Can not find nib with that name")
return
}
Комментарии:
1. На самом деле @anhtran..as Я упомянул в комментарии, проблема заключалась в том, что я не зарегистрировал только кончик….