2015-05-14 3 views
2

Обновлено:performSegueWithIdentifier ошибка

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "addMapItem" { 
     geocoder.geocodeAddressString(textAddress.text, completionHandler: {(placemarks: [AnyObject]!, error: NSError!) -> Void in 
      if let placemark = placemarks?[0] as? MKPlacemark { 
       var lat = placemark.coordinate.latitude 
       var long = placemark.coordinate.longitude 
       var coordinates = placemark.coordinate 
       var annotation = MKPointAnnotation() 
       annotation.coordinate = placemark.coordinate 
       annotation.title = self.textName.text 
       annotation.subtitle = self.textAddress.text 
       self.annotations.append(annotation) 
       var destination : FirstViewController = segue.destinationViewController as! FirstViewController 
       destination.savedItems = self.annotations 
      } 
     }) 
    } 
} 

На моем AddLocation контроллере представления, у меня есть 2 перетекает. Один из них запускается нажатой кнопкой, которая берет введенные данные и добавляет их в таблицу. Другой сеанс (тот, который мы сейчас работаем) берет данные, преобразует адрес в аннотацию, а затем передает эту аннотацию переменной на моем контроллере отображения карты и добавляет аннотацию.

enter image description here

+0

попробуйте установить отправителя на ** ноль ** один раз –

+0

@DanBeaulieu, который не вносит никаких изменений в мои ошибки. – Alec

+0

Вы сказали в своем описании: 'performSegueWithIdentifier (" addMapItem ", отправитель: self)', но в вашем коде он говорит 'performSegueWithIdentifier (" addMapItem ", отправитель: UIButton.self)'? Измените его на «отправитель: отправитель», и это должно решить первую проблему. – Eendje

ответ

1

Вместо того чтобы использовать UIButton.self как отправитель, использовать sender. И вы не можете использовать замыкание с performSegueWithIdentifier:

performSegueWithIdentifier("addMapItem", sender: UIButton.self) { 
    // Some code 
} 

использование:

performSegueWithIdentifier("addMapItem", sender: sender) 

и я думаю, вы забыли добавить self в этой строке:

destination.savedItems = annotations // Should be self.annotations 

В этом месте код следует поместить так, что он будет вызываться, когда вы используете performSegueWithIdentifier:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "addMapItem" { 
     // Your code 
    } 
} 
+0

Все еще получаю обе ошибки с этим кодом. – Alec

+0

Просто проснулся, поэтому я мог бы отключиться. Я вижу, что у вас есть закрытие за 'performSegueWithIdentifier'. Это может вызвать это. – Eendje

+0

Это исправляет ошибку, но я хотел, чтобы она выполняла весь код внутри этого закрытия после 'performSegueWithIdentifier'. Единственной причиной, по которой я использовал 'performSegueWithIdentifier', является передача массива аннотаций контроллеру представления с помощью карты. – Alec

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