我目前正在开发一个 Swift 应用程序,该应用程序在嵌入在另一个视图控制器中的表视图中有一个位置列表。我遇到的问题是它在我获得用户位置之前加载了 segue。我需要它等到获得位置。这是我目前正在做的事情:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if let embeddedVC = segue.destinationViewController as? MapList where segue.identifier == "locationList" {
embeddedVC.longitude = self.longitude
embeddedVC.latitude = self.latitude
}
}
当前它只是通过一个位置 0,0,因为在执行 segue 之前没有时间更新它。
我使用以下代码修复了它:
var embedvc:MapList?
然后在 prepareForSegue 函数中:
if (segue.identifier == "locationList") {
let detailScene = segue.destinationViewController as! MapList
self.embedvc = detailScene;
}
然后当我想传递位置时:
self.embedvc?.latitude = self.latitude
self.embedvc?.longitude = self.longitude
可以使用
属性观察器(如 didSet
和 willSet
)来监视经度和纬度的变化。一旦两者都改变了预制,则 segue。
例如:
var tup : (longitude: Int, latitude: Int) = (0,0) {
didSet {
print("Segue")
//Segue here
}
}
tup = (longitude: 1, latitude: 2)
更改tup
后,您可以触发 segue