Сообщение об ошибке Не удалось привести тип ошибки к значению - Swift - PullRequest
0 голосов
/ 18 декабря 2018

Недавно я добавил приведенный ниже код, чтобы некоторые введенные пользователем данные отображались при нажатии кнопки редактирования.Но вместо открытия контроллера представления редактирования приложение зависает.

 override func tableView(_ tableView: UITableView,
               leadingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration?

{

    let modifyAction = UIContextualAction(style: .normal, title:  "Edit", handler: { (ac:UIContextualAction, view:UIView, success:(Bool) -> Void) in
        print("Update action ...")

        let MainStoryboard = UIStoryboard(name: "Main", bundle: Bundle.main)
        let vc = MainStoryboard.instantiateViewController(withIdentifier: "FreshReleaseEdit") as! EditfreshreleaseViewController
        vc.selectedFreshRelease = self.freshreleases[indexPath.row]
        self.present(vc, animated: true, completion: nil)
        success(true)



    })
    modifyAction.title = "Edit"
    modifyAction.backgroundColor = .blue



    return UISwipeActionsConfiguration(actions: [modifyAction])
    }

Когда я нажимаю кнопку редактирования, приложение вылетает со следующим сообщением об ошибке:

Обновить действие ... Возможноне приведено значение типа «UINavigationController» (0x1d37e81e0) к «fresh_release.EditfreshreleaseViewController» (0x1043d7248).2018-12-17 20: 56: 30.547305-0500 свежая версия [7644: 1985252] Не удалось привести значение типа 'UINavigationController' (0x1d37e81e0) к 'fresh_release.EditfreshreleaseViewController' (0x1043d7248).(lldb)

Есть предложения, как это исправить?

1 Ответ

0 голосов
/ 18 декабря 2018

Вероятно, ваш EditfreshreleaseViewController встроен в UINavigationController.Вот почему ваше приведение не сработало.

Вам нужно сначала разыграть VC на UINavigationController, затем на topViewController на EditfreshreleaseViewController.

Изменить строку:

let vc = MainStoryboard.instantiateViewController(withIdentifier: "FreshReleaseEdit") as! EditfreshreleaseViewController

до

let navVC = MainStoryboard.instantiateViewController(withIdentifier: "FreshReleaseEdit") as! UINavigationController
let vc = navVC.topViewController as! EditfreshreleaseViewController
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...