2017-04-01 57 views
-1

私は、テーブルビューから位置データを渡すセグを持っています。このSegueが完了した後にマップアノテーションを追加する必要がありますが、マップは初期のVCなので、Segueが発生していないためデータが不足してロード時にクラッシュします。segueがSwift 3を完了したかどうかを確認する方法?

segueが発生しているかどうかをチェックするifステートメントに次のコード(viewDidLoad内)をラップするか、使用できるデータがあるかどうかを確認する必要があると思います。

let roomPin = MGLPointAnnotation() 
    roomPin.coordinate = CLLocationCoordinate2D(latitude: room.latitude, longitude: room.longitude) 

    mapView.addAnnotation(roomPin) 

使用するデータがあるかどうかをどのように確認するべきかは完全にはわかりません。

編集:

部屋は、名前と電話番号を表示するには、テーブルビューで呼び出されalamofire

class Room { 

var roomNumber : String! 
var roomName : String! 
var latitude : Double! 
var longitude : Double! 

init(json : JSON) { 
    roomNumber = json["room_number"].stringValue 
    roomName = json["room_name"].stringValue 
    latitude = json["latitude"].double 
    longitude = json ["longitude"].double 
} 

を搭載したカスタムクラス}

です。

var room : Room! 

どれ:押されたとき、それはとして宣言されている部屋で、私はそれのviewDidLoadで注釈コードの上に持っている私のmapVC

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 


    if segue.identifier == "mapSegue" { 
     if let destination = segue.destination as? ViewController { 
      destination.room = sender as! Room 


     } 
    } 
} 

に、私のマップビューコントローラでルームオブジェクトを渡すセグエを行い、助けに感謝します!

+0

コードを表示します。 「部屋」とは何ですか?どのように設定されていますか? – matt

答えて

0

は、私はあなたがそれがクラッシュしsenderRoomにオブジェクト型を型キャストしようとするタイプUITableViewCellクラスのものとなりますdestination.room = sender as! Roomsenderため、問題が並んでいると思います。

+0

ああ、そうだよ。私はそのための修正を見つける必要があります。ありがとう。 – ollyboon

関連する問題