如何设置演练/介绍屏幕?

时间:2016-10-27 20:32:12

标签: ios swift uipageviewcontroller

我是新开发者,我正在努力使用我的应用程序的Walkthrough屏幕。 我创建了它,但当我点击继续我的主屏幕时,应用程序崩溃了。 这是我在"继续"下面的代码。按钮:

  @IBAction func skipButtonTapped(_ sender: AnyObject) {


    let nextView: FirstViewController = self.storyboard?.instantiateViewController(withIdentifier: "FirstViewController") as! FirstViewController

    let appdelegate = UIApplication.shared.delegate as! AppDelegate


    appdelegate.window!.rootViewController = nextView

}

我得到的错误是:

 Could not cast value of type 'UITabBarController' (0x19f33c0d8) to 'Iwin.FirstViewController' (0x100057220).

我认为问题出在标识符名称的名称中,在我的例子中是#34; FirstViewController"

这是我的TabBarController的故事板ID,它应该是我应用的第一个屏幕。

附上我也上传了一张照片。

1 个答案:

答案 0 :(得分:1)

您看到的错误可能与您在函数第一行上执行的强制转换(as!)有关。你正在做以下事情:

  1. 调用instantiateViewController(withIdentifier:),Apple API文档说明返回UIViewController(在这种情况下,它返回UITabBarController,一个子类)
  2. Force converting UITabBarControllerFirstViewController,失败。
  3. 这是因为强制转换可以保证结果值不是nil,但不能保证它不会失败(崩溃)。 UITabBarController根本不可兑换,因为它不会扩展/实施FirstViewController

    我的猜测是,即使你已经为该视图控制器提供了标识符 "FirstViewController",但它只是一个普通的旧UITabBarController。在Interface Builder中仔细检查此View Controller实际上是FirstViewController类的实例。

    查看您的照片,“类”字段的默认值为UITabBarController - 这应该是您尝试更改的第一件事。填写FirstViewController,告诉我它是否有效。