【问题标题】:Swift 3 - Segue / Cast from uiviewcontroller to unrelated type always failsSwift 3 - 从 uiviewcontroller 到不相关类型的 Segue / Cast 总是失败
【发布时间】:2017-03-19 02:44:07
【问题描述】:

我试图将一个布尔语句从我的视图控制器管理视图控制器传递到另一个使用 segue 的视图控制器,并且我收到“从 uiviewcontroller 转换为不相关类型总是失败”的错误。

ma​​inVC

public func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController?{
        guard let viewControllerIndex = theViewControllers.index(of: viewController) else {
            return nil
        }
        let nextIndex = viewControllerIndex + 1

        if(viewControllerIndex == 0){
            let sessionTimerActive: Bool = false
            performSegue(withIdentifier: "sessionActiveBool", sender: sessionTimerActive)

        }

secondVC

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if let sessionTrackerBoolClone = segue.destination as? Bool{
    sesssionTrackerActive = sessionTrackerBoolClone
    }
}

但是在行

if let sessionTrackerBoolClone = segue.destination as? Bool{

我收到错误消息。

【问题讨论】:

    标签: swift uiviewcontroller segue


    【解决方案1】:

    您需要输入 cast sender 来获取您的 Boolean 值而不是 segue.destination,因为目标是 UIViewController 的类型。

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if let sessionTrackerBoolClone = sender as? Bool{
            sesssionTrackerActive = sessionTrackerBoolClone
        }
    }
    

    如果您想将此 Bool 值传递给您的下一个控制器,则将 destination 类型转换为您的 ViewController 并设置其属性。

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        let vc = segue.destination as! ViewController //Your ViewController class
        if let sessionTrackerBoolClone = sender as? Bool{
            vc.sesssionTrackerActive = sessionTrackerBoolClone
        }
    }
    

    【讨论】:

      【解决方案2】:

      在您的代码中,segue.destination 将是 UIViewController。那你为什么要把它投给Bool?正是那个演员给你一个错误。您可能在那里查看了错误的值。解决这个问题,你应该没事:)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-07-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-16
        • 1970-01-01
        相关资源
        最近更新 更多