2010-12-02 10 views
2

私はマップビューを注釈付きで使用しています。タップすると、右側に公開アイコンが表示されます。これまで送信者のMKAnnotationの吹き出しのタイトルを抽出する

- (void)showDetails:(id)sender 
{ 
    NSLog(@"showDetails: called!"); 
    NSLog(@"sender: %@",sender); 
    PermitDetailViewController *permitDetail = [[PermitDetailViewController alloc] initWithStyle:UITableViewStyleGrouped]; 
    NSLog(@"permitDetail.title: %@",permitDetail.title); 
    permitDetail.title = sender.title; //compiler doesn't like this! 
    NSLog(@"permitDetail.title: %@",permitDetail.title); 
    [self.navigationController pushViewController:permitDetail animated:YES]; 
    [permitDetail release]; 
} 

すべてが順調といいますが、私はコールアウトのタイトルは何であったかを知る必要があり:タップすると、この関数が呼び出されます。私はsender.titleをやろうとしていますが、うまくいきません...アイデアはありますか?私はpermitDetail.title = self.title;に問題のある行を変更したときに

これは、コンソール出力です:

2010-12-02 11:50:06.044 Parking[55413:207] showDetails: called! 
2010-12-02 11:50:06.045 Parking[55413:207] sender: <UIButton: 0x8139890; frame = (104 8; 29 31); opaque = NO; autoresize = LM; layer = <CALayer: 0x8139920>> 
2010-12-02 11:50:06.045 Parking[55413:207] permitDetail.title: (null) 
2010-12-02 11:50:06.045 Parking[55413:207] permitDetail.title: All Permits 

答えて

8

あなたのケースでは、送信者が吹き出しボタン(ないMKAnnotation)であるので、それはタイトルのプロパティを持っていません。

viewForAnnotationでは、公開ボタンでaddTargetを削除します。アノテーションビューのrightCalloutAccessoryViewをボタンに設定するだけです。

次に、コールアウトがタップされたときに呼び出されるcalloutAccessoryControlTappedデリゲートメソッドを実装します。また、コールの注釈ビューへの参照も提供します。

- (void)mapView:(MKMapView *)mapView 
     annotationView:(MKAnnotationView *)view 
     calloutAccessoryControlTapped:(UIControl *)control 
{ 
    NSLog(@"callout annotation.title = %@", view.annotation.title); 

    //do your show details thing here... 
} 
+0

私はこの文で混乱しています:注釈ビューは、注釈への参照が含まれています「viewForAnnotationでは、開示ボタン上のaddTargetを削除するだけのボタンであることを注釈ビューのrightCalloutAccessoryViewを設定します。」吹き出しの公開アイコンを取り除き、ユーザーが吹き出しをタップして詳細ビューに移動するようにすることを提案しているようです。可能であれば、そこに公開アイコンを置くことを本当に好むだろう。私はまだあなたが言ったことをすべて理解していないと思っています。ありがとう。 – Stunner

+0

心配しないで...私はそれを理解しました。私はaddButton ...メソッドを取り除きました。 \t UIButton * rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; \t annotationView.rightCalloutAccessoryView = rightButton;そして、私はあなたが実装すると言ったことを実装し、それは働いた!あなたはあなたのものよ、小道具を知っている! – Stunner

+0

ありがとう、それはうまくいった。すみませんでした。私はaddTargetの呼び出しを削除することを意味します。コールアウトのクリックを呼び出すには、独自のメソッドを指定する必要はありません。マップビューにはデリゲートがあるためです。 – Anna

関連する問題