2016-12-21 5 views
-2

Я пытаюсь передать данные на метку на моем втором VC через функцию func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView).Swift: Константа '' используется до инициализации

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' использовался до инициализации.

Я не совсем уверен, что происходит не так.

ответ

5

Вы только объявили переменную destVC, не инициализируются его. Вам необходимо установить эту переменную прямо или через раскадровку перед ее использованием, например. это:

let destVC = ShopDetailViewController() 

или

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

Ошибка ясно, что вы еще не инициализировали constnt destVC и пытаетесь использовать ее свойство shopName. Таким образом, инициализированный destVC перед доступом к его свойству удалит ошибку.

Если вы используете storyboard

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

Если вы используете xib

let destVC = ShopDetailViewController() 
+0

не 'пусть destVC: ShopDetailViewController' быть инициализацией? Как еще я его инициализирую? – daanyyaal

+0

@daanyyaal Если вы не знаете, как установить идентификатор viewController в раскадровке, проверьте это так: http://stackoverflow.com/a/15478575/6433023 –

Смежные вопросы