我想做的事情:
我正在尝试按下导航栏右上角的+按钮,将应用程序推送到新视图(使用navigationController.pushViewController),从新视图中获取一些用户输入文本,然后返回到原始观点。
问题:
下面的代码返回nil,导致navigationController.pushViewController使应用程序崩溃。 所以,我再次
let newPostView = self.storyboard?.instantiateViewController(withIdentifier: "PostNewActivityViewController") as? PostNewActivityViewController
然后下面的行崩溃应用程序,因为newPostView是零。
navigationController?.pushViewController(newPostView!, animated: true)
我从此异常中获得的所有错误消息都是EXC_BAD_INSTRUCTION,控制台输出只告诉我在解包Optional值时意外发现了nil。我不明白为什么newPostView是零。
另外,我想知道这是否是从另一个视图控制器获取用户输入的最佳做法。
非常感谢任何帮助或反馈。
答案 0 :(得分:1)
在您的评论中,您提到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)
我希望这会有所帮助。如果您需要进一步澄清,请与我们联系。