Ios 无法将PageViewController类型的值强制转换为其他控制器

Ios 无法将PageViewController类型的值强制转换为其他控制器,ios,swift,uipageviewcontroller,uistoryboardsegue,Ios,Swift,Uipageviewcontroller,Uistoryboardsegue,您好,我有一个ViewController,它通过segue连接到UIPageViewController,在ViewController中还有两个按钮通过segue连接到另一个控制器(LoginSignupViewController)。按钮名称为登录和注册。登录和注册按钮都有不同的序列标识符。单击“登录”按钮或“注册”按钮时出错 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {

您好,我有一个ViewController,它通过segue连接到UIPageViewController,在ViewController中还有两个按钮通过segue连接到另一个控制器(LoginSignupViewController)。按钮名称为登录和注册。登录和注册按钮都有不同的序列标识符。单击“登录”按钮或“注册”按钮时出错

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
    if (segue.identifier == "loginSegue") {

        let secondViewController = segue.destinationViewController as! LoginSignupViewController

        secondViewController.navigationTitle = "LOGIN"

    }else if (segue.identifier == "registerSegue") {

        let secondViewController = segue.destinationViewController as! LoginSignupViewController

        secondViewController.navigationTitle = "SIGN UP"
        //etc...
    }

}
如果我使用此代码编译应用程序。。我明白了

Terminating app due to uncaught exception 'NSInvalidArgumentException' reason: '-[__NSCFType set]: unrecognized selector sent to instance
因此,我删除了if-else条件,并使用此代码编译了应用程序

let secondViewController = segue.destinationViewController as!   LoginSignupViewController

    secondViewController.navigationTitle = "LOGIN"
我得到这个错误

 Could not cast value of type 'Myproject.PageViewController' (0x10008c550) to 'MyProject.LoginSignupViewController' (0x10008c0f0).
当我打印出
print(segue.identifier)

它在控制台上打印这个

Optional("pageViewController")
我的故事板截图


注意:该代码在IOS 9或更高版本上运行良好。应用程序在IOS 8.4上崩溃了。我知道你的问题了。如果有其他情况,你应该保持健康。你应该这样做:

1Put
var stringTitle:String
LoginSignupViewController

2
prepareSegue
中的代码更改为:

if (segue.identifier == "loginSegue") {

    let secondViewController = segue.destinationViewController as! LoginSignupViewController

    secondViewController.stringTitle = "LOGIN"

}else if (segue.identifier == "registerSegue") {

    let secondViewController = segue.destinationViewController as! LoginSignupViewController

    secondViewController.stringTitle = "SIGN UP"
    //etc...
}
3
LoginSignupViewController的
viewDidLoad

self.navigationItem.title = "LOGIN"

您确定“loginSegue”指向您的
LoginSignupViewController
?第二个错误指示
destinationViewController
实际上是一个
PageViewController
,崩溃发生的原因是您正在强制尝试将其转换为
LoginSignupViewController

我调试了代码,发现应用程序正在崩溃,因为在目标控制器的viewdid load函数中,我添加了一些不适用于IOS 8的代码。我没有费心调试目标控制器代码,因为错误是不明确的,因为它给了我类型转换错误。谢谢你们的帮助和时间。我在这里写这封信是为了防止将来有人遇到这个错误,他也应该检查另一个目的地控制器代码。

@hellosheikh仍然崩溃?是的。。该代码在IOS 9上运行良好。。它在ios 8中崩溃了。4@hellosheikh那么
secondViewController.navigationTitle
呢?对不起,我没听清楚你的意思?我的意思是什么是
navigationTitle