斯威夫特:常数' '在初始化之前使用

时间:2016-12-21 12:56:57

标签: swift swift3 constants

我试图通过函数func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView)将数据传递到第二个VC上的标签。

func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) {

    print("Annotation selected")


    if let annotation = view.annotation as? POIAnnotations {

       let destVC : ShopDetailViewController

        destVC.shopName.text = annotation.title!

        print("Your annotation title is: \(annotation.title!)")

    }

}

当我将shopName.text设置为annotation.title时,我收到错误消息:

  

Constant' destVC'在初始化之前使用。

我不太确定出了什么问题。

2 个答案:

答案 0 :(得分:7)

您只声明了变量destVC,而没有初始化它。您需要在使用变量之前直接或通过故事板对变量进行实例化,例如:这样:

let destVC = ShopDetailViewController()

let storyboard = UIStoryboard(name: "MyStoryboardName", bundle: nil)
let destVC = storyboard.instantiateViewController(withIdentifier: "ShopDetailViewController") as! ShopDetailViewController

答案 1 :(得分:2)

错误很明显,表示您尚未初始化constnt destVC并尝试使用其属性shopName。因此,在访问其属性之前初始化destVC将删除错误。

如果您使用storyboard

let destVC = self.storyboard?.instantiateViewController(withIdentifier: "IdentifierOfVC") as! ShopDetailViewController

如果您使用xib

let destVC = ShopDetailViewController()