gpt4 book ai didi

ios - 使用 segue 将 CLLocation 传递到下一个 View

转载 作者:行者123 更新时间:2023-11-28 07:55:31 25 4
gpt4 key购买 nike

我在主视图中获取当前位置,并希望使用 segue 将此位置对象传递到下一个 View 。 segue 可能是正常的“显示”类型的新 View 页面,或“嵌入”类型的 subview 。这是我的脚本:

import UIKit
import CoreLocation

class ViewController: UIViewController, CLLocationManagerDelegate {

var clmanager: CLLocationManager!

override func viewDidLoad() {
super.viewDidLoad()
clmanager = CLLocationManager()
clmanager.delegate = self
clmanager.requestWhenInUseAuthorization()
clmanager.startUpdatingLocation()
}

var location : CLLocation?
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
location = locations[0]
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if (segue.identifier == "showSegue") { // This part is totally OK
let dest = segue.destination as! ShowViewController
dest.object = self.location
}

if (segue.identifier == "embedSegue") { // This part is not OK!!!
let dest = segue.destination as! EmbedViewController
dest.object = self.location
}
}
}

我认为“Show”和“Embed”类型的区别在于,“Show”类型是由用户手动激活,而“Embed”类型是立即 strong> 在加载主视图时激活。那时,该位置尚不可用。

如何让“嵌入”部分成功? 我希望如果更新的位置可用,嵌入的 subview 应该自动更新

最佳答案

在你的 detailViewController 中添加这个

var location : CLLocation?

//在第一个类中声明一个位置变量..

 var location : CLLocation?
// Get location
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
// Ammendment here
location = locations[0]

print(location)
}

// Pass to the next view
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if (segue.identifier == "thisSegue") {
let dest = segue.destination as! DetailViewController
dest.location = self.location
}
}

您需要确保在 didUpdateLocations 方法中有可用位置时 show 执行 segue

关于ios - 使用 segue 将 CLLocation 传递到下一个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48199864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com