【问题标题】:Error message Could not cast value type error - Swift错误消息无法转换值类型错误 - Swift
【发布时间】:2018-12-18 02:09:22
【问题描述】:

最近我添加了以下代码,以便在点击编辑按钮时显示一些用户输入的数据。但应用程序没有打开编辑视图控制器,而是冻结了。

 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)

关于如何解决此问题的任何建议?

【问题讨论】:

    标签: swift uiviewcontroller uinavigationcontroller edit


    【解决方案1】:

    您的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
    

    【讨论】:

    • 现在收到错误消息:线程 1:致命错误:在展开可选值时意外发现 nil
    • @sckring 你能展示你的故事板吗?具体来说,显示 ID 为“FreshReleaseEdit”的控制器以及与其连接的控制器。
    • 老实说,我不完全确定如何在此处发布图片。我需要 10 个声望点才能做到这一点吗?
    • @sckring 只需将其上传到 imgur.com 并在此处发布链接。
    • @sckring 你的导航控制器没有连接到任何东西。我假设您想在右侧显示控制器?您应该从导航控制器控制+拖动到右侧的控制器,然后选择“根视图控制器”。
    猜你喜欢
    • 1970-01-01
    • 2016-03-20
    • 2015-08-04
    • 2017-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-05
    相关资源
    最近更新 更多