2016-04-28 16 views
0

私は別のスウィフトファイルに名前Capitalを持つクラスを持っています。私の(ViewController)では、地図上の各ピンの位置、画像、タイトルなどを宣言します。ピンをタップするとcalloutAccessoryControlTappedがポップアップし、それは私がタップピンのタイトルを渡されたが、私はイメージを渡すことはできません私のDetailsViewController、に私に指示...マップ注釈から詳細ビューコントローラに画像を渡す

let Headquarters = Capital(title: "Headquarters", coordinate: CLLocationCoordinate2D(latitude: (some latitude), longitude: (some longitude)), info: "Our headquarters", image: "Location1") 

そして私は私が完璧に働いていViewControllerからDetailViewController

にセグエ
 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "showDetails" { 

     let theDestination:DetailsViewController = segue.destinationViewController as! DetailsViewController 
     theDestination.toPass = (sender as! MKAnnotationView).annotation!.title! } } 

私のクラスの資本

import MapKit 
    import UIKit 

class Capital: NSObject, MKAnnotation { 

var title: String? 
var coordinate: CLLocationCoordinate2D 
var info: String 
var image: String? 


init(title: String, coordinate: CLLocationCoordinate2D, info: String, image: String) { 
    self.title = title 
    self.coordinate = coordinate 
    self.info = info 
    self.image = image 
} 
} 

そして、それは私が(それらを宣言する)のViewControllerでそれを持っている方法です

let Headquarters = Capital(title: "Headquarters", coordinate: CLLocationCoordinate2D(latitude: (some coordinate), longitude: (some coordinate)), info: "Our headquarters", image: "Location1") 

そして

mapView.addAnnotations([Headquarters, BlahBlah, OtherStuff]) 

その後、私はピン

 func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView? { 
    let identifier = "Capital" 

    if annotation.isKindOfClass(Capital.self) { 

     var annotationView = mapView.dequeueReusableAnnotationViewWithIdentifier(identifier) 

     if annotationView == nil { 

      annotationView = MKAnnotationView(annotation:annotation, reuseIdentifier:identifier) 
      annotationView!.canShowCallout = true 
      annotationView!.image = UIImage(named: "pin") 


      let btn = UIButton(type: .DetailDisclosure) 
      annotationView!.rightCalloutAccessoryView = btn 
     } else { 

      annotationView!.annotation = annotation 

     } 

     let cpa = annotation as! Capital 
     annotationView!.image = UIImage(named:cpa.image!) 

     return annotationView 

    } 


    return nil 
} 

にそれらを入れて、それから、私は私が

答えて

0

をDetailsViewController画像を渡すためにしようとしているそれらのいくつかのより多くがありますprepareForSegueの画像をどこに渡しているのかわからない場合は、detailViewControllerにロードしましたか? ? まず私はdetailVCで変数を宣言します:

var image: UIImage? 

をして、私はあなたのViewControllerに画像を渡します

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "showDetails" { 

     let theDestination:DetailsViewController = segue.destinationViewController as! DetailsViewController 
     theDestination.toPass = (sender as! MKAnnotationView).annotation!.title! 
     theDestination.image = UIImage(named :"your-image-name") 
    } 
} 

そしてdetailVCのviewDidLoadに私は私の変数イメージを設定します私のIBOutletにImageView:

override func viewDidLoad(){ 
    self.imageView.image = self.image 
} 
+0

私のイメージ名(複数のピンのそれぞれ)は私のMKAnnotationの中にあり、私はそれを文字列それをどうやって渡すことができますか? – Ekaterina96

+0

MKAnnotation内に画像を保存する場所にコードを投稿できますか? – Chajmz

+0

私の質問を編集しました: – Ekaterina96

関連する問題