2

さて、私は注釈付きの地図ビューを持っています。タップすると、右側に開示アイコン付きの吹き出しが表示されます。タップすると、次の関数が呼び出されます。

- (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
4

1 に答える 1

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...
}
于 2010-12-02T20:40:53.580 に答える