来自不同故事板的Swift PushViewController

时间:2018-12-28 19:51:10

标签: swift uiviewcontroller uinavigationcontroller uistoryboard uistoryboardsegue


我正尝试以编程方式显示我的ViewControllers中另一个故事板的其中一个。但是由于某些原因,我要显示的ViewController的属性为nil。

那是我的错误:Unexpectedly found nil while unwrapping an Optional value

  

我在SecondViewController中遇到错误。它显示但   我的应用程序由于属性为零而崩溃。

那是我的代码:

let secondStoryBoard = UIStoryboard(name: "SecondStoryBoard", bundle: nil)
let secondViewController = secondStoryBoard.instantiateViewController(withIdentifier: "secondVC") as! SecondVC


self.navigationController?.pushViewController(secondViewController, animated: true)

那是产生错误的代码:

class SecondVC: ViewController
{
    @IBOutlet weak var mapView: MKMapView!
    mapView.isHidden = true // ERROR!! Unexpectedly found nil while unwrapping an Optional value
}
  

已解决:只需要重新连接我的@IBOutlet连接

1 个答案:

答案 0 :(得分:1)

这意味着下一行要么是nil,要么不是SecondVC类型。

secondStoryBoard.instantiateViewController(withIdentifier: "secondVC")

我会在情节提要中验证您是否具有标识符secondVC,并且视图控制器的类型为SecondVC


编辑:

根据问题中发布的OP的新代码,应将SecondVC更改为以下内容。

class SecondVC: ViewController
{
    @IBOutlet weak var mapView: MKMapView!

    override func viewDidLoad() {
        mapView.isHidden = true
    }
}

基本上,这将等到视图加载后再访问mapView。对于原始代码,您试图在实际加载之前访问mapView


编辑2:

mapView出口似乎未正确链接到情节提要。