0

カスタムテーブルセルのラベルに、ユーザーの現在の場所と別の注釈(MapViewに表示されている)との間の距離を表示したい。

各セルにはカフェの名前(nameLabel)が表示され、その下に各カフェからの距離(distanceLabel)が表示されます。

私のMapViewController.mはこのコードを使用して、ユーザーの現在の場所と最も近いカフェの間の距離を計算します。

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {

    for (MapViewAnnotation *annotation in self.mapView.annotations) {
        CLLocationCoordinate2D coord = [annotation coordinate];
        CLLocation *userLocation = [[CLLocation alloc] initWithLatitude:coord.latitude longitude:coord.longitude];
        annotation.distance = [newLocation distanceFromLocation:userLocation];
        CLLocationDistance calculatedDistance = [userLocation distanceFromLocation:userLocation];
        annotation.distance = calculatedDistance;
    }

カスタムセルを既に設定しました。テキストラベル( distanceLabelと呼ばれます)内に計算された距離を表示するために、TableViewコード(TableViewController.m)に何を入力する必要があるかを知りたいだけです。

たとえば、この行をどのように終了しますか?

cell.distanceLabel.text = 

アップデート

TableViewController.hへの参照を追加しようとしましたが、xcodeは「別の種類のシンボルとしての「CLLocationDistance」の再定義」というエラーをスローし続けます。

@class CLLocationDistance; 

@property (nonatomic, strong) CLLocationDistance *calculatedDistance; 

アップデート

.hファイル

ここに画像の説明を入力してください

****アップデート**

**。mファイル****

ここに画像の説明を入力してください

4

1 に答える 1

1

fx で CLLocationDistance calculateDistance の前方参照を作成します。あなたの .h 。CLLocationDistance は double のプリミティブ データ型として typedef であるため、前方参照 (CLLocationDistance calulatedDistance; または @property CLLocationDistance calulatedDistance;) でポインターを使用しないでください。次に、次の操作を行います。

 cell.distanceLabel.text = [NSString stringWithFormat:@"%f", calculatedDistance]; 

したがって、実際には、別の/新しい double を作成して、それを calculatedDistance に割り当てる必要はありません。混乱して申し訳ありません.. :)

于 2013-01-28T09:25:32.740 に答える