0

注釈の配列を使用して、マップ上に注釈を正常に描画しています。注釈をクリックして、色や画像を変更することもできます。私の問題は、使用が 2 番目の注釈を選択し、最初の注釈の色または画像を選択されていない色/画像に動的に変更したい場合に発生します。すべての注釈の配列を取得して配列を操作できますが、配列に色または画像を設定しようとすると、同様のエラーが発生します。

for (MKAnnotationView *ann in map.selectedAnnotations){ 
  if ([ann isMemberOfClass:[Place class]]) { 
    place = (Place *)ann; 
      if (currentPlaceID != place.placeID) { 
        UIImage *i = [UIImage imageNamed:@"pin.png"];
        ann.image = i; 
      }
}

ann.image = i; に到達するまで、上記のコードは問題なく動作します。その後、エラーになります。私が得るエラーは次のとおりです:-

  • -[Place setImage:]: インスタンス 0x4514370 に送信された認識されないセレクタ

私はこれについて2日間ぐるぐる回っているので、アドバイスしてください!!!!

これを行う最善の方法についてのアイデアはありますか?

前もって感謝します

4

2 に答える 2

0

私は最終的にこれを行う方法を考え出しました。いつものように、方法がわかればそれほど難しくありません。これを渡すと思っただけです。

- (void)setSelected:(BOOL)selected animated:(BOOL)animated
  {
    [super setSelected:selected animated:animated];
    NSLog(@"here I am in set selected");
    if (YES == selected)
    {
       NSLog(@"I am selected");
    }
    else 
   {
     self.backgroundColor = [UIColor clearColor];
      NSLog(@"not selected");
    }
  }
于 2009-10-29T19:23:50.807 に答える
0

クラス Place に image というプロパティがありますか?

みたいな…@property (nonatomic, retain) UIImage* image;ちゃんと合成されてますか?@synthesize image;?

エラーは非常に単純です。一部のオブジェクトが応答しないメッセージを受信して​​います。つまり、.image によって呼び出される「setImage」です。

コードは次のとおりです。

1. for (MKAnnotationView *ann in map.selectedAnnotations) {
2.    if ([ann isMemberOfClass:[Place class]]) {
3.        place = (Place *)ann;
4.        if (currentPlaceID != place.placeID) {
5.           UIImage *i = [UIImage imageNamed:@"pin.png"];
6.           ann.image = i;
7.        }
8.    }
9. }

私が見ることができるもの:

  • ann は MKAnnotationView です (map.selectedAnnotations から)
  • 注釈を 3 行目の場所にタイプキャストしています (これは正しいですか?場所は MKAnnotationView をサブクラス化しますか?)
  • 画像を注釈に正しく設定しています

これが意味すること:

  • Place が実際に MKAnnotationView のサブクラスである場合、setImage (どういうわけか) メソッドを非表示にしました
  • Place が MKAnnotationView のサブクラスでない場合は、注釈として処理しようとしている (確かに) 注釈に無効な注釈を追加しています。
于 2009-10-29T13:05:42.650 に答える