PushViewController 显示黑屏

PushViewController shows Black Screen

我的应用程序有问题。

我不是经验丰富的程序员,所以也许这只是一个简单的解决方案。我认为存在这个问题是因为我只是尝试并使用我的应用程序,所以我制作了一个新应用程序并且存在同样的问题。

当我用 navigationController?.pushViewController(PinkViewController(), animated: true) 推送到 ViewController 时。

我只是黑屏。如果我有这样的代码 Label.text = "String 在 PinkViewController() 的 viewdidload 中。我在这行代码中收到以下错误:

fatal error: Unexpectedly found nil while implicitly unwrapping an Optional

我在网上搜索过,但没有找到解决此问题的方法。我希望你能帮助我。

它崩溃的原因是你的标签可能被定义为一个 @IBOutlet 连接到你的 故事板的 [=14] 中的 UILabel =].但是,当您使用空构造函数实例化 PinkViewController 时,您不是 "using the storyboard-way" 并且您的标签出口(这是非可选的,因为它可能在那里有一个感叹号)无法连接到视图控制器的故事板实例。

那么您应该选择以下选项之一:

如果您在故事板中定义了 PinkViewController,则必须以一种 nib 的方式实例化它,例如:

在您的 Storyboard 中,select 视图控制器,然后在 Identity Inspector 的右侧,提供 Storyboard ID。在代码中,您可以调用它来实例化您的视图控制器,然后推送它:

let pinkViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "yourIdentifier")

更好的是,您可以通过按住控制键从当前 VC 拖动到 PinkViewController,在故事板中创建一个 Segue。有很多在线创建 Segues 的教程。如果您想以编程方式触发它,请不要忘记在 Storyboard 中为 Segue 提供标识符。这可以通过调用

来完成
self.performSegue(withIdentifier: "yourIdentifier", sender: nil)

如果您想在单击按钮时触发该导航,您甚至可以将 Segue 从按钮拖到 PinkViewController,这样您甚至不需要在代码中调用它。

如果您仅以编程方式定义 PinkViewController (通过创建一个符合 UIViewController 的 class 命名),您可能想要用 PinkViewController(nibName: nil, bundle: nil) 实例化它(注意参数而不是空构造函数),然后用你提供的代码推送它。

希望有帮助,如果没有,请提供进一步的代码/项目见解。