Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取位置后无法更新标签

获取位置后无法更新标签
EN

Stack Overflow用户
提问于 2019-06-21 19:56:04
回答 1查看 65关注 0票数 1

我有一个简单的按钮,当我按下这个按钮时,我调用了另一个类,我的location类来获取用户的当前位置。获得位置后,我想要更新标签文本,我必须显示位置。

这是我的location类:

代码语言:javascript
运行
AI代码解释
复制
class LocationManager: NSObject, CLLocationManagerDelegate {

var locationManager: CLLocationManager!
var geoCoder = CLGeocoder()

var userAddress: String?

override init() {
    super.init()
    locationManager = CLLocationManager()
    locationManager.delegate = self
    locationManager.desiredAccuracy = kCLLocationAccuracyBest
    locationManager.activityType = .other
    locationManager.requestWhenInUseAuthorization()
}

func getUserLocation(completion: @escaping(_ result: String) -> ()){
    if CLLocationManager.locationServicesEnabled(){
        locationManager.requestLocation()
    }
    guard let myResult = self.userAddress else { return }
    completion(myResult)

}

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]){
    let userLocation: CLLocation = locations[0] as CLLocation
    geoCoder.reverseGeocodeLocation(userLocation) { (placemarks, err) in
        if let place = placemarks?.last{
            self.userAddress = place.name!
        }
    }
}

func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {
    print(error)
}
}

这就是我调用方法并更新标签的地方:

代码语言:javascript
运行
AI代码解释
复制
func handleEnter() {
    mView.inLabel.isHidden = false
    location.getUserLocation { (theAddress) in
        print(theAddress)
        self.mView.inLabel.text = "\(theAddress)"
    }
}

我的问题是,当我单击我的按钮(并触发handleEnter())时,没有任何反应,就像它不会注册点击一样。只有在第二次点击之后,我才得到地址和标签的更新。我尝试添加打印,并使用断点来查看第一次点击是否注册,并且它注册了。我知道位置可能需要几秒钟才能返回带有地址的答案,我等待了,但仍然没有,只是在第二次点击后才显示出来。

似乎在第一次点击时,它还没有得到地址。当我获得地址时如何“通知”,然后尝试更新标签?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-21 20:02:26

由于didUpdateLocationsreverseGeocodeLocation方法是异步调用的,因此此guard可能返回nil地址的截止日期

代码语言:javascript
运行
AI代码解释
复制
guard let myResult = self.userAddress else { return }
completion(myResult)

这不会触发更新标签所需的完成,相反,您需要

代码语言:javascript
运行
AI代码解释
复制
var callBack:((String)->())? 

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]){
    let userLocation: CLLocation = locations[0] as CLLocation
    geoCoder.reverseGeocodeLocation(userLocation) { (placemarks, err) in
        if let place = placemarks?.last{
           callBack?(place.name!)
        }
    }
}

然后使用

代码语言:javascript
运行
AI代码解释
复制
location.callBack = { [weak self] str in
   print(str)
   DispatchQueue.main.async { // reverseGeocodeLocation callback is in a background thread 
    // any ui 
   }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56709683

复制
相关文章
beegfs 7.3.2更新后服务无法启动
beegfs 7.3.2版本默认强制身份验证身份。所以在安装或升级后,没有配置authfile会导致服务无法启动。
姚华
2023/02/22
2.1K0
CDN配置后无法获取真实ip
这篇文章最后修改于 2022-06-10 日,距今已有 166 天,请注意甄别内容是否已经过时!
羽翼博客
2022/11/28
5K0
CDN配置后无法获取真实ip
MacOs 恢复系统后无法更新版本
由于从新安装系统后,本人系统版本10.10.5,在App Store检测更新一直无法检测到最新版本。
先知先觉
2021/12/06
1.1K0
MacOs 恢复系统后无法更新版本
戴尔BIOS更新后可能导致电脑无法正常启动
据 Bleeping Computer 网站披露,戴尔最近发布的BIOS 更新在多个笔记本电脑和台式机型号上引起严重启动问题,部分用户反映更新后,电脑不能正常启动。
FB客服
2021/12/27
2.4K0
戴尔BIOS更新后可能导致电脑无法正常启动
小程序拒绝获取位置信息后,引导用户再授权
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hotqin888/article/details/89647291
hotqin888
2019/05/13
3.4K0
小程序拒绝获取位置信息后,引导用户再授权
通过IP获取位置
昨天写了个获取天气的API,那么我也该写一个调用这个API的Demo了。不过获取天气必须要城市名称,而Demo上不可能在弄一个输入城市的吧……好在,可以通过IP获取所在城市。 <?php if(iss
FHYC
2018/06/22
1.9K0
获取地理位置
可根据获取到的经纬度查询到所在的地理位置。 <p><button onclick="geoFindMe()">Show my location</button></p> <div id
ProsperLee
2018/10/24
2.1K0
获取地理位置
WordPress分类和标签等页面获取最后文章更新时间
WordPress 分类目录和标签页面如果想要获取到目录及标签里面内容的最后更新时间,就是通过分类目录和标签下面最近发布的那边文章的发布或者修改时间,因为 WordPress 本身并没有提供相关的函数或者数据能够直接查询到更新时间,然而对于分类和标签,当然还包括作者页面,搜索页面等所有的聚合页面,都有可能需要获取到其最后的更新时间,那么今天子凡就来分享一个简单的办法。
张子凡
2023/01/09
7600
WordPress分类和标签等页面获取最后文章更新时间
容器开启特权模式后无法通过cadvisor获取GPU metrics指标
开启特权模式(--privileged)的容器,在使用nvidia GPU时,无法通过cAdvisor获取GPU相关的metrics信息。Google大法可以搜到相关的Issue,于2018年提出,至今仍处于Open状态(给cAdvisor贡献代码的机会),由于涉及到的内容较多,分为三篇来讲。
李鹤
2023/03/28
4650
容器开启特权模式后无法通过cadvisor获取GPU metrics指标
容器开启特权模式后无法通过cadvisor获取GPU metrics指标
开启特权模式(--privileged)的容器,在使用nvidia GPU时,无法通过cAdvisor获取GPU相关的metrics信息。Google大法可以搜到相关的Issue,于2018年提出,至今仍处于Open状态(给cAdvisor贡献代码的机会),由于涉及到的内容较多,分为三篇来讲。
李鹤
2023/03/28
1.1K0
容器开启特权模式后无法通过cadvisor获取GPU metrics指标
容器开启特权模式后无法通过cadvisor获取GPU metrics指标
开启特权模式(--privileged)的容器,在使用nvidia GPU时,无法通过cAdvisor获取GPU相关的metrics信息。Google大法可以搜到相关的Issue,于2018年提出,至今仍处于Open状态(给cAdvisor贡献代码的机会),由于涉及到的内容较多,分为三篇来讲。
李鹤
2023/03/28
7450
容器开启特权模式后无法通过cadvisor获取GPU metrics指标
详析获取标签
在前几期的文章当中,我们学习了JS的基础语法,它是我们学习其它知识点的重要前提。小编也与大家分享了JS逻辑与DOM的相结合,并带着大家去实现了一些简单的页面交互效果,涉及了获取标签—>绑定事件—>操作标签样式。而今天的文章主要带着大家来分析其它获取标签的方法,这样才能更灵活的去获取网页中的标签。 本文内容概要: 1 回顾通过ID名获取标签的方法 2 获取标签的其它方法 3 课程小结 4 课后作业 1 回顾通过ID名获取标签的方法 ID名获取标签需要给标签起一个ID名,然后通过getElementById()
HTML5学堂
2018/03/13
2.2K0
详析获取标签
vue使用腾讯位置服务获取当前位置
验证地址:https://lbs.qq.com/dev/console/user/info
腾讯位置服务
2021/01/08
3.6K0
解决win10更新后wifi无法使用甚至wifi图标消失
自从win10系统自动更新后,总会时不时断网,检查wifi发现正常连接,但就是无法上网,本想着关了再连一下,没想到点击wifi关闭后连图标都消失了,给我留一个飞行模式是真的狠。
vivi
2020/07/14
4.2K0
解决win10更新后wifi无法使用甚至wifi图标消失
win11更新后内置edge无法打开问题及手动处理
win11评估版本,build 22557.ni_release.220210-1445.
zhangrelay
2022/03/21
1.2K0
win11更新后内置edge无法打开问题及手动处理
JavaScript 中获取光标位置
DOM中并没有直接获取光标位置的方法,那么我们只能间接来获取光标位置。DOM支持获取光标选中的范围,我们可以以此为切入点,来获取或定位光标的位置,当选取范围起始点和结束点一样时,就是光标插入的位置。
越陌度阡
2020/11/26
12.7K0
Ubuntu 14.04 64 位系统更新重启后无法进入系统,光标不停闪烁
我电脑装的是 Windows10 和 Ubuntu 双系统,最近一直在用ubuntu,昨天系统说有更新我就更新了,更新完说需要重启,我选了稍后启动,然后昨天晚上从实验室关机出来就没管了,结果今天早上开机选择 ubuntu 之后系统就进不去了,左上角光标一直闪,重启几次无果,于是上网查了查,解决方案如下:
Alan Lee
2019/05/26
2.5K0
vue项目中swiper动态更新后无法轮播问题 附带案例代码
swiper是很常用的一个组件,我项目中用到的版本是4.1.6。刚开始,我就按照官网的案例写了个demo,当然图片都是静态写死的,确实可以轮播了,但是我项目的需求是要动态修改轮播图的内容。然后我就改成vue的方式了,js和css是通过cdn引入的。下面是swiper的全部代码: 有问题请加群交流java群:200909980,vue群:128806068 ,或者在下边评论 vue template 代码 轮播内容是通过循环数组自动生成的 <div class="swiper-container" v-
码农笔录
2018/06/29
2.2K0
点击加载更多

相似问题

点击后获取元素的更新位置

12

app销毁后如何获取更新位置?

24

无法在monodroid中获取位置更新

12

更新状态后无法获取值

118

在用户启用GPS后获取位置更新

37
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档