Сбой при нажатии didSelectRow для перехода к другому viewcontroller

#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 Я упомянул в комментарии, проблема заключалась в том, что я не зарегистрировал только кончик….