私は自分のプログラムでCloudKitからいくつかの "イベント"をダウンロードします。それぞれには、画像、タイトル、および場所が含まれています。 2番目の2つはすぐに使用され、問題はありません。別のビューコントローラを使用して画像を表示している注釈の情報ボタンをクリックすると、イメージが表示されます。 ViewControllerを使用する前に画像を取得して、各イベントの画像を別々に保つのには問題があります。各レコードはCloudKitから照会上下方法に次に送信ループのために投入される。ここでSwiftでViewControllerの複数のインスタンスに画像を送信
である:ここ
func loadEvent(_ completion: @escaping (_ error:NSError?, _ records:[CKRecord]?) -> Void)
{
//...record is downloaded from cloudkit
for record in records
{
if let asset = record["Picture"] as? CKAsset,
let data = NSData(contentsOf: asset.fileURL),
let image1 = UIImage(data: data as Data)
{
self.drawEvents(record["LocationF"] as! CLLocation, title1: record["StringF"] as! String, pic1: image1)
}
}
}
変数が割り当てられ、点注釈を作成するために使用される場合である(それここで
func drawEvents(_ loc: CLLocation, title1: String, pic1: UIImage)
{
mapView.delegate = self
let center = CLLocationCoordinate2D(latitude: loc.coordinate.latitude, longitude: loc.coordinate.longitude)
let lat: CLLocationDegrees = center.latitude
let long: CLLocationDegrees = center.longitude
self.pointAnnotation1 = CustomPointAnnotation()
self.pointAnnotation1.imageName = pic1
self.pointAnnotation1.title = title1
self.pointAnnotation1.subtitle = "Event"
self.pointAnnotation1.coordinate = CLLocationCoordinate2D(latitude: lat, longitude: long)
self.pinAnnotationView = MKPinAnnotationView(annotation: self.pointAnnotation1, reuseIdentifier: nil)
self.mapView.addAnnotation(self.pinAnnotationView.annotation!)
}
がMKMapAnnotation上の情報ボタンがクリックされたときにEventPageが見せる機能です::画像を含むカスタム1)がある
ここ
はEventPageのためのViewControllerです:単一インスタンスのプロパティであなたの注釈を保存する
class EventPageViewController: UIViewController {
@IBOutlet weak var eventPic: UIImageView!
var photo: UIImage!
override func viewDidLoad() {
super.viewDidLoad()
let firstViewController:FirstViewController = storyboard?.instantiateViewController(withIdentifier: "Home") as! FirstViewController
photo = firstViewController.pointAnnotation1.imageName
//photo is nil
eventPic.image = photo
}
}
項目を1つの変数ではなく配列に保存します。 – Paulw11
しかし、どのピクチャがイベントページにいつ渡されるべきかはわかります。それぞれが異なる – Steve
タップされたアノテーションビューはデリゲートメソッドに渡されるので、どのアイテムであるかが分かります。アノテーションビューの 'annotation'プロパティは' CustomPointAnnotation'インスタンスです。 – Paulw11