gpt4 book ai didi

ios - swift - 使用委托(delegate)方法的返回值来设置变量

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

为了让您对我想要完成的任务有一个基本的了解,我希望有一个 map 可以放大到用户的当前位置,然后以该缩放级别跟踪用户。

在 view_did_load 中我有:

    let span = MKCoordinateSpanMake(0.075, 0.075)
let region = MKCoordinateRegion(center: CLLocationCoordinate2D(latitude: currentLat, longitude: currentLong), span: span)
map.setRegion(region, animated: true)

下面我有一个位置管理器的委托(delegate)函数:

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) -> (lat: CLLocationDegrees, long: CLLocationDegrees) {
let userLocation:CLLocation = locations[0]
let currentLong = userLocation.coordinate.longitude
let currentLat = userLocation.coordinate.latitude
return (currentLat, currentLong)
}

是否可以使用此委托(delegate)方法的返回值来设置我声明区域变量的纬度和经度?目前,当我尝试此操作时,它显示“在初始化之前使用常量‘currentLat’”和“在初始化之前使用常量‘currentLong’”。我的方法可能与解决方案完全不同,但感谢您提供的任何帮助!

最佳答案

没有;如果您通过添加返回值来更改函数的类型,LocationManager 将不会调用更改后的函数,更不用说使用其返回值了。如果方法签名不完全匹配,则您的函数不会实现 CLLocationManagerDelegate 协议(protocol),无论其名称是什么。

相反,您应该简单地在 didUpdateLocations 函数中更新您的 MapView,如果这是您的 viewController 的一部分,或者,如果您有一个包装 CoreLocationManager 的单例,则发布通知并让您的 map ViewController 监听通知并更新您的 mapView收到通知后。

关于ios - swift - 使用委托(delegate)方法的返回值来设置变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41732864/

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