InstantiateViewController 导致 nil 导致它崩溃

InstantiateViewController resulting a nil causing it to crash

我想做什么:

我正在尝试按导航栏右上角的 + 按钮,将应用推送到新视图(使用 navigationController.pushViewController),从新视图中获取一些用户输入文本,然后return回到原图

问题:

下面的代码 return 为 nil,这会导致 navigationController.pushViewController 使应用程序崩溃。 所以,我再说一遍

let newPostView = self.storyboard?.instantiateViewController(withIdentifier: "PostNewActivityViewController") as? PostNewActivityViewController

然后下面的行使应用程序崩溃,因为 newPostView 为 nil。

navigationController?.pushViewController(newPostView!, animated: true)

我从这个异常中得到的所有错误消息都是 EXC_BAD_INSTRUCTION 并且控制台输出只告诉我它在展开一个 Optional 值时意外地找到了 nil。我不明白为什么 newPostView 是 nil。

此外,我想知道这是否是从另一个视图控制器获取用户输入的最佳做法。

如有任何帮助或反馈,我们将不胜感激。

在您的评论中,您提到 p self.storyboard(在调试器中)正在生成(打印)nil

所以我建议您改为通过以下方式获取对 Storyboard 的引用:

let storyboard = UIStoryboard(name: "YOUR STORYBOARD'S NAME (e.g. Main)", bundle: Bundle.main)

然后继续实例化并以相同的方式呈现您的 UIViewController,如下所示:

let viewController = storyboard.instantiateViewController(withIdentifier: "PostNewActivityViewController")
present(viewController, animated: true, completion: nil)

希望对您有所帮助。如果您需要进一步说明,请告诉我。