Сбой при нажатии didSelectRow для перехода к другому viewcontroller - PullRequest
0 голосов
/ 01 апреля 2019

У меня есть табличное представление с 4 строками, и при нажатии на 4-ую строку я хочу перейти к другому контроллеру представления.Это то, что я написал в 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 Ответ

0 голосов
/ 01 апреля 2019

Как я и думал, 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
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...