Miles Away 没有在重新加载时更新
Posted
技术标签:
【中文标题】Miles Away 没有在重新加载时更新【英文标题】:Miles Away not updating on reload 【发布时间】:2017-06-08 17:01:24 【问题描述】:我有一个表格视图单元格,里面有一个 uilabel,它获取两点之间的距离(用户当前位置和我选择的另一个点)。问题是,当我更改数据库中的点并重新加载 tableview 时,每个单元格中的英里数都会更新。但是,当我在模拟器中更改当前位置并重新加载 tableview 时,里程数不会更新。这是我的代码。
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath, object: PFObject?) -> PFTableViewCell?
let cell = tableView.dequeueReusableCell(withIdentifier: "Cells", for: indexPath as IndexPath) as! MyCell
cell.object = object
let currentLocation = CLLocation()
locManager.distanceFilter = 50
if( CLLocationManager.authorizationStatus() == CLAuthorizationStatus.authorizedWhenInUse ||
CLLocationManager.authorizationStatus() == CLAuthorizationStatus.authorizedAlways)
let coordinate₀ = CLLocation(latitude: CLLocationDegrees(-41)!, longitude: CLLocationDegrees(52.3)!)
let coordinate₁ = CLLocation(latitude: currentLocation.coordinate.longitude, longitude: currentLocation.coordinate.latitude)
let distanceInMeters = coordinate₀.distance(from: coordinate₁)
if(distanceInMeters <= 1609)
cell.Distance.text = "\(Float(round(distanceInMeters * 3.28084)).cleanValue) ft"
else
cell.Distance.text = "\(Float(round(distanceInMeters / 1609)).cleanValue) mi"
【问题讨论】:
更新位置时需要关闭并重启模拟器,你试过了吗? @RashwanL 首先,当我这样做时,它会设置回默认位置,其次是在 iPhone 模拟器上,如果用户在重新加载 tableview 时位置发生变化或用户是否必须更改,它会更新重启应用 没有真机在你改变位置时会立即工作,模拟器不会。 在模拟器中将位置设置为移动设备,例如“高速公路”。这样,您无需重新启动模拟器即可更新位置。 【参考方案1】:您需要在viewController
中定义您的CLLocationManager
,然后在didUpdateLocations
中您需要重新加载您的tableView
import UIKit
import CoreLocation
class MyViewController: UIViewController, CLLocationManagerDelegate
@IBOutlet weak var LabelTest: UILabel!
var manager = CLLocationManager()
@IBOutlet weak var tableView: UITableView!
//your default position
var userLoc = CLLocation(latitude: 42.6977,longitude: 23.3219)
didSet
self.tableView.reloadData()
//**Your class implementation**/
override func viewDidLoad()
super.viewDidLoad()
//**Your implementation*//
manager.delegate = self
manager.desiredAccuracy = kCLLocationAccuracyBest
manager.requestWhenInUseAuthorization()
manager.startUpdatingLocation()
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation])
let userlocation: CLLocation = locations[0] as CLLocation
self.userLoc = userlocation
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath, object: PFObject?) -> PFTableViewCell?
let cell = tableView.dequeueReusableCell(withIdentifier: "Cells", for: indexPath as IndexPath) as! MyCell
cell.object = object
let currentLocation = self.userLoc
let coordinate₀ = CLLocation(latitude: CLLocationDegrees(-41), longitude: CLLocationDegrees(52.3))
let coordinate₁ = CLLocation(latitude: currentLocation.coordinate.longitude, longitude: currentLocation.coordinate.latitude)
let distanceInMeters = coordinate₀.distance(from: coordinate₁)
if(distanceInMeters <= 1609)
cell.Distance.text = "\(Float(round(distanceInMeters * 3.28084)).cleanValue) ft"
else
cell.Distance.text = "\(Float(round(distanceInMeters / 1609)).cleanValue) mi"
希望对你有帮助
【讨论】:
以上是关于Miles Away 没有在重新加载时更新的主要内容,如果未能解决你的问题,请参考以下文章
如何在不重新加载窗口的情况下单击按钮时在 JSP 中进行更新查询?