2016-12-14 10 views
0

ありがとうございます。すべてのオブジェクトに異なるdistanceInMetersを設定するにはどうすればよいですか?

問題は、すべてのセルにはdistanceInMetersが1つしかありません。すべてのオブジェクトはすべて同じ座標を持ちます。それを修正するには?

ありがとうございました!

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) 
{ 


    let currentLocation = locations[0] 
    let coords = CLLocation(latitude: currentLocation.coordinate.latitude, longitude: currentLocation.coordinate.longitude) 
    if (currentLocation.horizontalAccuracy > 0) { 
     locationManager.stopUpdatingLocation() 
    } 


} 
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! EateriesTableViewCell 
    let mall = mallToDisplayAt(indexPath: indexPath) 
    cell.thumbnailImageView.image = UIImage(named: mall.image) 
    cell.thumbnailImageView.clipsToBounds = true 
    cell.nameLabel.text = mall.name 
    cell.locationLabel.text = mall.location 
    cell.typeLabel.text = mall.time 
    let coords = CLLocation() 
    let mallLocate = CLLocation(latitude: malls[0].latitude, longitude: malls[0].longitude) 

    let distanceInMeters = mallLocate.distance(from: coords) 
    let distanceInMetersString = String(distanceInMeters) 

    cell.distanceLabel.text = distanceInMetersString 

    return cell 

} 

答えて

1

cellForRowAtメソッドには2つの大きな問題があります。

  1. coordsは、ユーザーの現在の場所ではなく、空のCLLocationです。ユーザーの現在の場所をプロパティに格納し、coordsローカル変数の代わりにそのプロパティを使用する必要があります。
  2. mallの代わりにmalls[0]を使用してmallLocateを作成します。このため、100個のオブジェクトすべてが同じ座標を持つように見えます。
+0

ユーザーの現在の場所をプロパティに格納し、coordsローカル変数の代わりにそのプロパティを使用する方法はありますか。本当にありがとう、 – dmarinkin

+0

Swiftでプロパティを使用する方法がわからない場合は、[Properties](https://developer.apple.com/library/content/documentation/Swift/Conceptual)に直接移動する必要があります。/Swift_Programming_Language /Properties.html#//apple_ref/doc/uid/TP40014097-CH14-ID254)の「The Swift Programming Language」のセクションを参照してください。 – rmaddy

関連する問題