Отображение нового viewController при нажатии на отметку в MapView?IOS

Программируем под IOS
Ответить
Anonymous
 Отображение нового viewController при нажатии на отметку в MapView?

Сообщение Anonymous »

У меня есть MapView с булавками, показывающими позиции пользователей. Нажимая на них, я показываю некоторую информацию о пользователях и местах. Я хотел бы реализовать функцию, в которой, нажав на эту небольшую информационную панель, я могу перейти к другому viewController, из которого можно отправить личное сообщение через Parse. Даже кнопка подойдет.
Изображение

это мой код mapViwController:
func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!)
{
let point = PFGeoPoint(latitude:manager.location.coordinate.latitude, longitude:manager.location.coordinate.longitude)
let location = locations.last as! CLLocation

let center = CLLocationCoordinate2D(latitude: location.coordinate.latitude, longitude: location.coordinate.longitude)
let region = MKCoordinateRegion(center: center, span: MKCoordinateSpan(latitudeDelta: 1, longitudeDelta: 1))

self.mapView.setRegion(region, animated: true)

CLGeocoder().reverseGeocodeLocation(manager.location, completionHandler: {(placemarks, error)->Void in

if (error != nil)
{
println("Error: " + error.localizedDescription)
return
}

if placemarks.count > 0
{
let pm = placemarks[0] as! CLPlacemark
self.displayLocationInfo(pm, point: point)
}
else
{
println("Error with the data.")
}
})
}

func displayLocationInfo(placemark: CLPlacemark, point: PFGeoPoint)
{
self.locationManager.stopUpdatingLocation()

self.createAnnotations(point, address: "\(placemark.locality) \(placemark.administrativeArea) \(placemark.postalCode) \(placemark.country)")
}

func locationManager(manager: CLLocationManager!, didFailWithError error: NSError!)
{
println("Error: " + error.localizedDescription)
}

// MARK: - Create Annotation

func createAnnotations(point: PFGeoPoint, address: String)
{
var query = PFUser.query()

var withinKms = NSUserDefaults.standardUserDefaults().objectForKey("withinKms") as! Double

// query?.whereKey("location", nearGeoPoint: point, withinKms: withinKms) // also withinKilometers if wanted
query?.whereKey("location", nearGeoPoint: point, withinKilometers: withinKms)

query?.limit = 10

query?.findObjectsInBackgroundWithBlock({ (objects, error) -> Void in

if error == nil
{
for(var i = 0; i < objects!.count; i++)
{
let user = objects! as! PFUser
var myHomePin = MKPointAnnotation()
let userPoint = user["location"] as! PFGeoPoint
myHomePin.coordinate = CLLocationCoordinate2DMake(userPoint.latitude, userPoint.longitude)
myHomePin.title = user.username

myHomePin.subtitle = address
self.mapView.addAnnotation(myHomePin)
}
}
else
{
println("Error: " + error!.localizedDescription)
}

})
}

Ответ Анбу
@IBOutlet weak var mapView: MKMapView!

//************************************************

func mapView(mapView: mapView!, annotationView view: MKAnnotationView!, calloutAccessoryControlTapped control: UIControl!) {

println("disclosure pressed: \(view.annotation.title)")

// do your stuff here
// @IBAction func startChat(sender: UIButton)

// add your segue
if control == annotationView.rightCalloutAccessoryView {
self.performSegueWithIdentifier("nextViewController", sender: self)
}

}
//************************************************


Подробнее здесь: https://stackoverflow.com/questions/329 ... -a-mapview
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»