如何检查segue是否完成Swift 3?
How to check if segue completed Swift 3?
我有一个从 table 视图传递位置数据的 segue。我需要在这个 segue 完成后添加一个地图注释,但地图是我的初始 VC,因此由于没有发生 segue,它由于缺少数据而在加载时崩溃。
我想我需要将以下代码(在 viewDidLoad 中)包装在一个 if 语句中,以检查是否发生了 segue,或者检查是否有任何数据可供使用。
let roomPin = MGLPointAnnotation()
roomPin.coordinate = CLLocationCoordinate2D(latitude: room.latitude, longitude: room.longitude)
mapView.addAnnotation(roomPin)
不完全确定我应该如何检查是否有任何数据要使用。
编辑:
房间是自定义的 class 装有 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
}
}
然后在 table 视图中调用以显示名称和号码。按下时,它会执行一个 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!
感谢任何帮助!
我猜问题出在 destination.room = sender as! Room
行,因为 sender
的类型是 UITableViewCell
class 并且当您尝试将 sender
类型转换为Room
崩溃的对象类型。
我有一个从 table 视图传递位置数据的 segue。我需要在这个 segue 完成后添加一个地图注释,但地图是我的初始 VC,因此由于没有发生 segue,它由于缺少数据而在加载时崩溃。
我想我需要将以下代码(在 viewDidLoad 中)包装在一个 if 语句中,以检查是否发生了 segue,或者检查是否有任何数据可供使用。
let roomPin = MGLPointAnnotation()
roomPin.coordinate = CLLocationCoordinate2D(latitude: room.latitude, longitude: room.longitude)
mapView.addAnnotation(roomPin)
不完全确定我应该如何检查是否有任何数据要使用。
编辑:
房间是自定义的 class 装有 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
}
}
然后在 table 视图中调用以显示名称和号码。按下时,它会执行一个 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!
感谢任何帮助!
我猜问题出在 destination.room = sender as! Room
行,因为 sender
的类型是 UITableViewCell
class 并且当您尝试将 sender
类型转换为Room
崩溃的对象类型。