InstantiateViewController导致nil导致崩溃

时间:2017-04-17 01:27:46

标签: ios swift storyboard viewcontroller navigationcontroller

我想做的事情:

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

enter image description here

问题:

下面的代码返回nil,导致navigationController.pushViewController使应用程序崩溃。 所以,我再次

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

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

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

我从此异常中获得的所有错误消息都是EXC_BAD_INSTRUCTION,控制台输出只告诉我在解包Optional值时意外发现了nil。我不明白为什么newPostView是零。

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

非常感谢任何帮助或反馈。

1 个答案:

答案 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)

我希望这会有所帮助。如果您需要进一步澄清,请与我们联系。