gpt4 book ai didi

ios - 如何将值从一个函数传递到另一个函数?

转载 作者:行者123 更新时间:2023-11-28 06:12:06 24 4
gpt4 key购买 nike

我想将我当前的位置坐标从 func locationManager() 传递到我的 func viewDidLoad() 我该如何传递它?

let manager = CLLocationManager()
var myLocation: CLLocationCoordinate2D?
var location=0
var latPass: Double!
var longPass: Double!

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation])
{
var location=locations[0]
let span:MKCoordinateSpan=MKCoordinateSpanMake(0.01, 0.01)
var myLocation:CLLocationCoordinate2D=CLLocationCoordinate2DMake(location.coordinate.latitude, location.coordinate.longitude)
let region:MKCoordinateRegion=MKCoordinateRegionMake(myLocation, span)
latPass=location.coordinate.latitude
longPass=location.coordinate.longitude
}

当我在 func locationManager 中打印我的 latlong 时,我得到了值,但是当我在我的 中打印它时viewDidLoad(),我得到 nil

这是我的 viewDidLoad()

override func viewDidLoad() {
super.viewDidLoad()

print(latPass)
print(longPass)

let position = CLLocationCoordinate2D(latitude:latPass, longitude: longPass)
let london = GMSMarker(position: position)
london.title = "You"
london.tracksViewChanges=true
london.icon = UIImage(named: "currentLocation.png")
london.map = mapView
mapView.selectedMarker=london
}

我想我必须创建一个 var 的实例,但我找不到方法。

最佳答案

ViewDidLoad 它是 View Controller 调用的第一个方法,一旦它被调用,其他方法也会被调用。您需要在 viewDidLOad 类中设置委托(delegate)。这些参数在加载 View 期间保持为空,但是当调用委托(delegate)方法时它将存储数据,您将按照方法中的方法获取它。

你需要这样:

override func viewDidLoad() {
super.viewDidLoad()

manager.delegate = self
}

然后这个方法执行它的东西:

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation])
{
var location=locations[0]
let span:MKCoordinateSpan=MKCoordinateSpanMake(0.01, 0.01)
var myLocation:CLLocationCoordinate2D=CLLocationCoordinate2DMake(location.coordinate.latitude, location.coordinate.longitude)
let region:MKCoordinateRegion=MKCoordinateRegionMake(myLocation, span)
latPass=location.coordinate.latitude
longPass=location.coordinate.longitude
print(latPass)
print(longPass)
/// Here you can set the positioning managing stuff, because lat long are showing.
let position = CLLocationCoordinate2D(latitude:latPass, longitude: longPass)
let london = GMSMarker(position: position)
london.title = "You"
london.tracksViewChanges=true
london.icon = UIImage(named: "currentLocation.png")
london.map = mapView
mapView.selectedMarker=london
}

调用方法后,您可以看到输出的控制台。

关于ios - 如何将值从一个函数传递到另一个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46251543/

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