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)
希望对您有所帮助。如果您需要进一步说明,请告诉我。
我想做什么:
我正在尝试按导航栏右上角的 + 按钮,将应用推送到新视图(使用 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)
希望对您有所帮助。如果您需要进一步说明,请告诉我。