Я использую MapKit
в своем приложении, и мне нужно было перетащить булавку в определенное место и в другой контроллер представления, когда у меня будет возможность нарисовать маршрут к этой булавке. Итак, я использую этот фантастический учебник, но у меня проблемы с его прохождением. информация с prepareForSegue
class Place: NSObject, MKAnnotation {
// This class creates the map annotation who have the place's location and some information about it
let title: String?
let locationName: String
let discipline: String
let coordinate: CLLocationCoordinate2D
// The title and the subtitle will appear when the user touches in a pin from a specific place.
init(title: String, locationName: String, discipline: String, coordinate: CLLocationCoordinate2D) {
self.title = title
self.locationName = locationName
self.discipline = discipline
self.coordinate = coordinate
super.init()
}
// The title will be the place's name and in the subtitle will appear where is the location
var subtitle: String? {
return locationName
}
}
Итак, в Map ViewController у меня есть эта функция, как работает, когда пользователь нажимает на annotation
булавку карты, если он нажимает эту информационную кнопку.
func mapView(mapView: MKMapView, annotationView view: MKAnnotationView,
calloutAccessoryControlTapped control: UIControl) {
let location = view.annotation as! Place
let launchOptions = [MKLaunchOptionsDirectionsModeKey: MKLaunchOptionsDirectionsModeDriving]
location.mapItem().openInMapsWithLaunchOptions(launchOptions)
}
Итак, чем я изменяю это func
:
func mapView(mapView: MKMapView, annotationView view: MKAnnotationView,
calloutAccessoryControlTapped control: UIControl) {
let location = view.annotation as! Place
let launchOptions = [MKLaunchOptionsDirectionsModeKey: MKLaunchOptionsDirectionsModeDriving]
performSegueWithIdentifier("GoRestaurant", sender: self)
}
потому что, как мне грустно, я хочу «openInMapsWithLaunchOptions» в другом ViewController, чей идентификатор — «GoRestaurant». Итак, я сделал prepareForSegue
, чтобы отправить «местоположение» и «параметры запуска».
func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
var showPlace: RestaurantsViewController = segue.destinationViewController as! RestaurantsViewController
showPlace.location = location
showPlace.launchOptions = launchOptions
}
но в RestaurantsViewController
, когда я пытаюсь «импортировать» местоположение, это не работает.
var locationName: String = "" //ok, no error
var location: Place = () //error: Cannot convert value of type '()' to specified type 'Place'
Я столько раз пытался инициализировать по-разному, но понятия не имею, кто это исправляет. Пожалуйста, кто-нибудь... Спасите мою жизнь, помогите мне с этим!