尝试在Swift中推送视图控制器时崩溃

时间:2018-11-26 15:31:03

标签: ios swift uiviewcontroller viewcontroller

我遇到一个奇怪的问题,当我尝试推送新的视图控制器时,我的应用程序崩溃了。我已经设置了滑动手势,并且想在检测到滑动时锁定到另一个视图控制器。当我运行这两行代码时...

let viewController:ViewController = ViewController()
self.navigationController?.pushViewController(viewController, animated: true)

应用程序崩溃不是专门在这两行代码上发生,而是在ViewController类中,当我在viewDidLoad方法中运行这段代码...

imageView.layer.masksToBounds = true

如果我对此进行评论,则在设置textField的自动更正类型时会崩溃。我在做什么错了?

4 个答案:

答案 0 :(得分:1)

当视图立即崩溃时,我首先查看的是InterfaceBuilder中该ViewController的Outlets中。我正在寻找任何带有感叹号的东西。这通常意味着我重命名了插座或以某种方式断开了连接。删除所有混乱的项目,只需按小数字x即可。我会附上一张照片,以便您查看。

enter image description here

答案 1 :(得分:0)

似乎您正在加载存在于情节提要中的ViewController

let viewController:ViewController = ViewController()

这将导致零出口,因此您必须使用

let viewController = storyboard.instantiateViewController(withIdentifier: "VCID") as! ViewController

并为该vc提供一个故事板标识符,例如 VCID

答案 2 :(得分:0)

我想我已经解决了这个问题,但是有一个怪异的副作用。我没有使用@Sh_Khan的答案中的代码行,而是使用了...

let viewController = nav?.storyboard!.instantiateViewController(withIdentifier: "mainVC") as! ViewController

变量nav等于当前视图控制器的导航控制器。这似乎没有任何打work,但由于某种原因,在执行搜索后,后退按钮不会从导航控制器中消失。有人知道解决方案吗,如果可以,请发表评论,我会更新我的答案。

编辑: 另一个问题是,它清除了由用户清除在该ViewController上更改的所有内容。还有另一种方法可以实例化ViewController而不清除它吗?

答案 3 :(得分:-1)

请遵循@Sh_Khan所说的内容,此外,请确保您要进行推送选择的视图已嵌入到Navigation控制器中。