2016-04-24 5 views
0

私はマップアプリケーションで作業していますが、これまではピンを落とすことができました(ピンはメモリと呼ばれています)。ドロップされた各ピンのピン座標情報を新しいシーンに表示したいので、ユーザーはドロップされたピンの概要を見ることができます。これをどうやってやりますか?ユーザーに座標情報を印刷する、Swift

私はメインのviewcontrollerをセットアップし、モーダルで表示される新しいシーンを追加しました。これまでのところ、私は場所を管理し、ドロップ/店舗ピンデータにするために、次のコードを持っている:

@IBOutlet weak var addButton: UIBarButtonItem! 
// Add button action 
@IBAction func addButton(sender: AnyObject) { 
    let annotation = MKPointAnnotation() 
    annotation.coordinate = CLLocationCoordinate2D(latitude: self.placesMap.userLocation.coordinate.latitude, longitude: self.placesMap.userLocation.coordinate.longitude) 
    self.placesMap.addAnnotation(annotation) 
    self.locationManager.startUpdatingLocation() 
} 

// Location function 
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { 
    let location = locations.last 
    let center = CLLocationCoordinate2D(latitude: location!.coordinate.latitude, longitude: location!.coordinate.longitude) 
    let region = MKCoordinateRegion(center: center, span: MKCoordinateSpan(latitudeDelta: 0.004, longitudeDelta: 0.004)) 
    self.placesMap?.setRegion(region, animated: true) 
    self.locationManager.stopUpdatingLocation() 
    let locationDictionary:[String:Double] = ["latitude":center.latitude,"longitude":center.longitude] 
    var locationArray = [[String:Double]]() 
    if NSUserDefaults.standardUserDefaults().objectForKey("locationArray") != nil { 
     locationArray = NSUserDefaults.standardUserDefaults().objectForKey("locationArray") as! [[String:Double]] 
    } 
    locationArray.append(locationDictionary) 
    NSUserDefaults.standardUserDefaults().setObject(locationArray, forKey: "locationArray") 
    NSUserDefaults.standardUserDefaults().synchronize() 
} 

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

答えて

0

はセグエを実行することが、あなたはperformSegueWithIdentifier送信者の引数にlocationArrayに渡すことができますいずれか、またはそれの財産になります場所によって異なりますあなたはコントローラを表示します。いずれにしても、ドロップされたピンの配列をUIViewControllerのprepareForSegueメソッドを介して新しいシーンに挿入します。

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    super.prepareForSegue(segue, sender: sender) 
    guard let identifier = segue.identifier else { return } 
    switch identifier { 
    case "newScene": 
     let controller = segue.destinationViewController as! NewSceneViewController 
     controller.arrayOfDroppedPins = locationArray 
     // or, controller.arrayOfDroppedPins = sender as! [[String:Double]] 
     // if you pass in locationArray as the sender 
    default: 
     break 
    } 
} 

次に、新しいシーンビューコントローラでプロパティarrayOfDroppedPinsを定義します。

関連する問題