Прежде всего, да. Я знаю, что этот вопрос задавался много раз, но ни одно из решений, похоже, не работает для меня. Я хотел бы добавить стрелку (символ) в свою аннотацию, чтобы после нажатия на нее открывается новая страница (см. Изображение).SWIFT 2: Аннотация со ссылкой на новую страницу.
Я могу добавить аннотации к карте, созданной из массива, который я извлекаю, но я не могу получить кнопку в аннотации, и поэтому я не могу открыть новую страницу.
Что я получил до сих пор:
func mapView(mapView: MKMapView!, viewForAnnotation annotation: MKAnnotation!) -> MKAnnotationView! {
if annotation is MKUserLocation {
//return nil
return nil
}
let reuseId = "pin"
var pinView = mapView.dequeueReusableAnnotationViewWithIdentifier(reuseId) as? MKPinAnnotationView
if pinView == nil {
//println("Pinview was nil")
pinView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: reuseId)
pinView!.canShowCallout = true
pinView!.animatesDrop = true
}
let button = UIButton(type: UIButtonType.DetailDisclosure) as UIButton // button with info sign in it
pinView?.rightCalloutAccessoryView = button
return pinView
}
Кроме того, если я пытаюсь отлаживать это, код Func MapView, кажется, не работать.
код, чтобы создать аннотацию:
Func getMapAnnotations() -> [деятельность] { Var аннотаций: Array = активность
do {
let data = NSData(contentsOfURL: NSURL(string: "http:/URL")!)
let jsonData = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers)
for anItem in jsonData as! [Dictionary<String, AnyObject>] {
let longtitudeItem = (anItem["LONGTITUDE"] as! NSString).doubleValue;
let latitudeItem = (anItem["LATITUDE"] as! NSString).doubleValue;
let name = anItem["NAME"] as! String;
let description = anItem["DESCRIPTION"] as! String;
// do something with the data retrieved:
let theSpan:MKCoordinateSpan = MKCoordinateSpanMake(0.01 , 0.01)
// let location:CLLocationCoordinate2D = mapView.userLocation.coordinate;
let location:CLLocationCoordinate2D = CLLocationCoordinate2D(latitude: latitudeItem , longitude:longtitudeItem)
let theRegion:MKCoordinateRegion = MKCoordinateRegionMake(location, theSpan)
mapView.setRegion(theRegion, animated: true)
let anotation = Activity(latitude: latitudeItem, longitude: longtitudeItem)
anotation.title = name
anotation.subtitle = description
annotations.append(anotation)
} } catch let error as NSError {
print(error)
}
return annotations }
Любая помощь будет высоко ценится, это сводит меня с ума!
Kr,
Привет, вы можете проверить свой код, чтобы увидеть, если вы можете найти то, что я не хватает? Я очень новичок в разработке iOS, поэтому я уверен, что многое можно улучшить, но пока я просто хочу проверить, как добавить кнопку и открыть новое представление. Код: https://github.com/the-traveller/Globe_connect/blob/master/globe_connect/RootViewController.swift Благодарим за помощь. – jonas
Привет, Это исправлено. Вы были правы в отношении «делегата», которого я никогда не понимал (или не нашел никакой информации), что вам нужно было добавить делегата в раскадровку на вашем карте. Спасибо. – jonas