gpt4 book ai didi

swift - 更改另一个 View Controller 中的位置请求的目标

转载 作者:行者123 更新时间:2023-11-30 12:16:47 25 4
gpt4 key购买 nike

我正在尝试创建一个应用程序,在该应用程序中,用户将能够在 View Controller 中选择他想要查找方向的位置,然后,将执行segue并打开一个MapView,其中包含他需要执行的指示。这是 map View 和路线请求的代码:

    mapkitView.delegate = self
mapkitView.showsScale = true
mapkitView.showsPointsOfInterest = true
mapkitView.showsUserLocation = true

locationManager.requestAlwaysAuthorization()
locationManager.requestWhenInUseAuthorization()

if CLLocationManager.locationServicesEnabled(){

locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.startUpdatingLocation()

}

let sourceCoordinates = locationManager.location?.coordinate
var destCoordinates = CLLocationCoordinate2D(latitude: 36.0922147,longitude: -113.4035741)

let sourcePlacemark = MKPlacemark(coordinate: sourceCoordinates!)
let destPlacemark = MKPlacemark(coordinate: destCoordinates)

let sourceItem = MKMapItem(placemark: sourcePlacemark)
let destItem = MKMapItem(placemark: destPlacemark)

let directionRequest = MKDirectionsRequest()
directionRequest.source = sourceItem
directionRequest.destination = destItem
directionRequest.transportType = .automobile

let directions = MKDirections(request: directionRequest)
directions.calculate(completionHandler: {

response, error in
guard let response = response else {
if let error = error {
print("Something went wrong.")
}
return
}

let route = response.routes[0]
self.mapkitView.add(route.polyline, level: .aboveRoads)

let rekt = route.polyline.boundingMapRect
self.mapkitView.setRegion(MKCoordinateRegionForMapRect(rekt), animated: true)


})

位置管理器定义为CLLocationManager()。目的地坐标默认设置为大峡谷国家公园,此代码位于override func viewDidLoad()内。

在另一个 View Controller 中,用户将选择他想要的地方作为最终目的地,然后我想执行到 map 的转场,其中目的地将更改为用户想要的位置,然后方向将也改变。我尝试过这样做,但没有成功:

self?.performSegue(withIdentifier: "teste", sender: self)
self?.firstViewController.destCoordinates = CLLocationCoordinate2D(latitude: -23.5957034,longitude: -46.675363)

谁能帮帮我吗?

最佳答案

您可以使用所需的参数实例化下一个 VC,而不是使用 segue?

let storyboard = UIStoryboard(name: "Storyboard", bundle: nil)
let nextViewcontroller = self.storyboard!.instantiateViewController(withIdentifier: "nextViewcontroller") as! NextViewcontroller
nextViewcontroller.destCoordinates = YOUR LOCATION

当然,您需要在下一个 VC 中创建参数,例如:

var destCoordinates : CLLocation?
// or
var destCoordinates : CLLocation!

如果你决定在下一个 VC 中创建一个可选变量,你将需要使用 if let 如果你决定强制解开你的变量,我建议使用 precondition(destCooperatives != nil ) 在你的 viewDidLoad 中,以确保你确实设置了你的变量

关于swift - 更改另一个 View Controller 中的位置请求的目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45334260/

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