收到位置更新时更新TableView单元格

时间:2016-03-25 12:57:16

标签: swift tableview

我想在收到位置更新时更新我的​​TableView,因此更新我向用户显示的距离标签。我已创建通知,通知我更新。

self.notificationCenter.addObserver(self, selector: "locationAvailable:", name: "LOCATION_AVAILABLE", object: nil)

func locationAvailable(notification: NSNotification) {
    let userInfo = notification.userInfo as! Dictionary<String, AnyObject>
    self.currentLocation = userInfo["location"] as! CLLocation
}

tableView单元格填充在数据源中:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cellIdentifier = "Cell"
        let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! AEDTableViewCell

        let aed: AED = self.aeds[indexPath.row]

        // Configure the cell
        cell.streetName.text = aed.street!
        cell.owner.text = aed.owner!
        cell.distanceLabel.text = String(format: "%.0f" + "m", calculateDistance(currentLocation: self.currentLocation, latitude: aed.latitude!, longitude: aed.longitude!))

        return cell
    }

我通过方法calculateDistance

计算距离
calculateDistance(currentLocation: self.currentLocation, latitude: aed.latitude!, longitude: aed.longitude!)

但是只要没有收到当前位置,我的tableview中就会出现错误的值。

收到通知后,如何立即更新tableView中的不同单元格?

1 个答案:

答案 0 :(得分:1)

最简单的方法是在tableView.reloadData()

中执行locationAvailable