如何检查segue是否完成了Swift 3?

时间:2017-04-01 14:32:18

标签: ios swift if-statement segue mapbox

我有一个segue,它从表视图传递位置数据。我需要在segue完成之后添加一个map注释,但是map是我的初始VC,因此由于缺少数据而导致加载崩溃,因为没有发生segue。

我认为我需要在if语句中包含以下代码(在viewDidLoad中),该语句检查是否已发生segue,或检查是否有可用的数据。

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

    mapView.addAnnotation(roomPin)

不完全确定我应该如何检查是否有任何数据可供使用。

编辑:

room是一个加载了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
}

}

然后在tableview中调用

以显示名称和编号。按下它时会执行一个segue,将Room对象传递给我的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


        }
    }
}

并且在我的地图视图控制器中,我在viewDidLoad中有上面的注释代码,其中空间被声明为:

var room : Room!

感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

我想问题出在destination.room = sender as! Room行,因为sender类型为UITableViewCell类,当您尝试将sender强制转换为Room对象时输入它崩溃。