我目前正在研究Swift中的一个应用程序,该应用程序在一个嵌入在另一个视图控制器中的tableview中有一个位置列表。我遇到的问题是它在我获取用户位置之前加载了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之前没有时间更新它。
答案 0 :(得分:1)
我使用此代码修复了它:
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
答案 1 :(得分:0)
您可以使用 Property Observers ,例如window.document = 10
和didSet
来监控经度和纬度的变化。一旦两者都改变预制形式的segue。
例如:
willSet
更改var tup : (longitude: Int, latitude: Int) = (0,0) {
didSet {
print("Segue")
//Segue here
}
}
tup = (longitude: 1, latitude: 2)
后,您可以触发segue