performSegueWithIdentifier 错误

performSegueWithIdentifier error

已更新:

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 个 segues。一个由按下按钮触发,它获取输入的数据并将其添加到 table。另一个 segue(我们目前正在处理的那个)获取数据,将地址转换为注释,然后将该注释传递到我的地图视图控制器上的变量并添加注释。

不要使用 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
    }
}