目前,我正在构建一个应用程序,根据当前位置显示附近的广告。当用户第一次启动应用程序时,我希望他们看到附近广告的前10名。
我按时获取位置时遇到了一些问题。我的问题是在加载视图之前尚未获取当前位置。 当然有委托的UpdatedLocation,但是这个被多次激活。我想它会多次触发,因为它想要获取最准确的位置?
所以我的问题是;如果找到该位置,然后开始搜索广告,我该怎么做才能“等待”?
提前致谢!
此致 Mittchel
答案 0 :(得分:1)
没有一个位置,你从CL获得一系列位置,一个缓存,然后其他人随着时间的推移精度不同,准确度越来越好(或更差),需要1秒到10分钟。
CL将首先为您提供缓存位置,这可能足以满足您的需要。如果它不是太旧(<60秒)和合理的准确度,继续使用缓存的位置,它将是禁食结果。否则你必须等待足够好的准确性(你必须决定什么是足够的,看看.horizontalAccuracy
)。
如果您坚持在调用viewDidLoad之前获取该位置(viewWillAppear将是一个更好的位置),那么您必须暂停推送该viewController,直到您有足够的位置。如何执行此操作取决于视图控制器的加载方式。
答案 1 :(得分:0)
这是我要做的。加载您的视图,然后在viewDidAppear中调用您的方法来更新位置。我一直在github上使用一个名为MBProgressHUD的开源项目。它将在完成工作时在屏幕上显示各种进度指示器(也会阻止用户离开您的视图)。它还为用户提供了一个视觉反馈,表明您的应用尚未停止并且正在运行。
您仍然需要解决您的准确性问题,但进度视图可让您有时间加载视图并在您提供所需内容时保持用户参与。并保持您的UI流畅。