0

座標を受け取り、逆ジオコーディングした後に目印を返すオブジェクトを作成しました。問題は、このメソッドが共時態であるため、見つかったら目印を返す方法が必要なことです。私のビューコントローラでは、これを次のように呼んでいます。

[getzip reverseGeocodeCurrentLocation:coordinate];

ここで、getzipは、これを実装するオブジェクトのインスタンスです(私の場合はまだ空です...):

- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFindPlacemark:(MKPlacemark *)placemark

さて、reverseGeocoder:didFindPlacemarkに入ったら、どのようにして目印をビューコントローラに戻すことができますか?

LocationManagerで行われているいくつかの例で見たのと同じことをしようとしました。locationManager:didUpdateToLocation:fromLocationからlocationUpdateメソッドが呼び出され、viewcontrollerにlocationUpdateが実装されていますが、機能しませんでした。言い換えれば、私はそれをしました:

- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFindPlacemark:(MKPlacemark *)placemark
{
[self.delegate setPlacemark:placemark];
}

ビューコントローラにsetPlacemarkを実装しましたが、何らかの理由でsetPlacemarkに到達しません(ところで、reverseGeocoder内でsetPlacemark:placemarkを呼び出すと、プレースマークは正しいです)。

ありがとう!

4

1 に答える 1

1

あなたのコメントによるself.delegateと、 inが実行されるnilときです。したがって、何も起こりません。[self.delegate setPlacemark:placemark];reverseGeocoder:didFindPlacemark:

呼び出されるdelegate前に、プロパティをViewControllerに設定する必要があります。reverseGeocoder:didFindPlacemark:ビューコントローラの変数が( ?)getzipを実装するクラスのインスタンスである場合、ビューコントローラでこれを行います。reverseGeocoder:didFindPlacemark:GetZipCode

getzip.delegate = self;

コメントで述べたように、View ControllerをGetZipcodeDelegateプロトコルに準拠させることは、委任しているオブジェクトが委任者に送信する可能性のあるメッセージに応答するため、ViewControllerが委任者になることができることを意味します。それが代表者であるという意味ではありませ

于 2011-07-12T17:03:03.300 に答える