2011-07-25 4 views
0

В моем приложении я использую mapkit. Все время на карте у меня есть несколько аннотаций. В выноске я разместил detailDisclosureButton. При нажатии этой кнопки я хочу загрузить новый viewController. Как это сделать?Вызов нового представления по нажатию кнопки раскрытия подробностей

Заранее спасибо.

ответ

2

В - (MKAnnotationView *)mapView:(MKMapView *)mV viewForAnnotation:(id)annotation делегатом добавить кнопку раскрытия, как -

UIButton *infoButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; 
[infoButton addTarget:self action:@selector(infoButtonPressed:) forControlEvents:UIControlEventTouchUpInside]; 
pinView.rightCalloutAccessoryView = infoButton; 

и в методе действия -

-(IBAction) infoButtonPressed:(id) sender 
{ 
    DetailViewController *dvc = [[DetailViewController alloc] init]; 
    [self.navigationController pushViewController:dvc animated:YES]; 
} 
+0

Работает s. В селекторе «:» нет. это должно быть только (infoButtonPressed). – Harsh

+0

зависит от того, нужен ли вам экземпляр отправителя или нет. – saadnib

0

Я бы поставил здесь: Modal View Controller Reference, чтобы увидеть, как перемещаться из одного вида в другой. Когда нажата кнопка detailDisclosureButton, настройте viewController, к которому вы хотите перейти, и используйте методы, описанные в ссылке. Надеюсь, это поможет!

1
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id)annotation 
{ 

    //Some code here 
    pinView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; 

    return pinView; 
} 

И использовать следующий метод делегата, чтобы получить действие кнопки

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control { 
// code to show details view 
} 
Смежные вопросы