无论如何要延迟容器视图中的嵌入式转场?

Is there anyway to delay an embedded segue in a container view?

我目前正在 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 之前没有时间更新。

您可以使用 属性 ObserversdidSetwillSet 来监视经度和纬度的变化。一旦两者都改变​​了,就开始了转场。

例如:

var tup : (longitude: Int, latitude: Int) = (0,0) {
didSet {
  print("Segue")
  //Segue here
  }
}

tup = (longitude: 1, latitude: 2)

一旦tup改变,你可以触发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