以下答案
我面临一个小问题,你可以帮助我。
我正在处理的应用程序允许您根据您的位置请求内容。
第一个ViewController在某种程度上可以获取您的位置/指定位置+一些其他信息来定位特定答案。
我需要执行一个segue将“问题”变量传递给我的第二个ViewController,在那里我根据问题详细信息加载带有查询的“答案”。
导致我麻烦的是,每当问题地理定位时,我都无法使用prepareForSegue检索信息,因为它不等待geoPoint被制作(完成)。第二个控制器显示我的纬度和经度没有。
我看到我可以使用“perfomSegueWithIdentifier”调用“prepareForSegue”方法,并在我的第二个视图控制器中检索信息,但它执行两次segue ...如何在我准备好但是使用时才能触发segue prepareForSegue数据参数我需要保留吗?
有没有办法使用performSegue将变量从一个控制器传递到另一个控制器? 任何帮助都会很棒。
此外,虽然我不认为代码与我的问题相关,但这是我使用的代码。
geoPointing方法
@IBAction func doPostQuestion(sender: UIButton) {
var thereQ:PFObject = PFObject(className: "tquestion")
if(somewhereLabel.text == "my location"){
println("Location is geolocalized")
PFGeoPoint.geoPointForCurrentLocationInBackground {
(geoPoint: PFGeoPoint!, error: NSError!) -> Void in
if error == nil {
self.geoLati = geoPoint.latitude as Double
self.geoLong = geoPoint.longitude as Double
self.performSegueWithIdentifier("goto_results", sender:self) // call prepareForSegue when ready but implies to have a segue done on click... (performed twiced)
}
}
}
self.navigationController?.popToRootViewControllerAnimated(true)
}
prepareForSegue
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if(segue.identifier == "goto_results"){
// Get Label
let theDestination = (segue.destinationViewController as displayAnswersViewController)
theDestination.lat = self.geoLati
theDestination.lng = self.geoLong
}
}
答案解决方案:
正如所建议的那样,要解决这个问题,您只需要从viewController1到viewController2创建segue,而不是从按钮创建。这样你就可以使用“performSegue”方法以编程方式触发prepareForSegue,无论如何都会调用prepareForSegue。
答案 0 :(得分:1)
要解决此问题,您只需要从viewController1到viewController2创建segue,而不是从按钮创建。这样你就可以使用“performSegue”方法以编程方式触发prepareForSegue,无论如何都会调用prepareForSegue。