Извлечение заголовка выноски MKAnnotation при отправителе - PullRequest
2 голосов
/ 02 декабря 2010

Хорошо, ребята, поэтому у меня есть вид карты с аннотациями, и при нажатии они отображают выноски со значком раскрытия справа.При нажатии эта функция вызывается:

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

1 Ответ

8 голосов
/ 02 декабря 2010

Отправителем в вашем случае является кнопка выноски (а не MKAnnotation), поэтому она не имеет свойства title.

В 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...
}
...