Как реагировать на нажатие кнопки аннотации с помощью раскадровки в iOS - PullRequest
0 голосов
/ 16 марта 2012

У меня есть правая кнопка в аннотации следующим образом:

UIButton *rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
rightButton.tag = [annotation index];

[rightButton addTarget:self action:@selector(annotationViewClick:) forControlEvents:UIControlEventTouchUpInside];

customAnnotationView.rightCalloutAccessoryView = rightButton;

В моем методе annotationViewClick я обычно переходил к контроллеру подробного представления, используя 'initWithNibName' и pushViewController

Какя делаю это, когда я использую раскадровки?Я полагаю, мне нужен переход?Кто-нибудь, пожалуйста, подтолкните меня в правильном направлении.

Ответы [ 3 ]

2 голосов
/ 16 марта 2012

Определите последовательность, перетаскивая IB из контроллера представления источника (сам контроллер представления, а не какой-либо элемент управления внутри него) в контроллер представления назначения.Присвойте ему идентификатор в инспекторе.

Теперь вы можете программно выполнять эту передачу из любого места (например, ваш метод annotationViewClick:) с помощью [self performSegueWithIdentifier:@"myIdentifier" sender:self].(Обратите внимание, что указанный метод не дает вам доступа к контроллеру представления назначения, поэтому вы все равно можете реализовать prepareForSegue:sender: для его настройки в зависимости от того, какая аннотация была нажата.)

0 голосов
/ 17 марта 2012
  1. В раскадровке через окно Инспектора вы даете контроллеру представления назначения идентификатор (имя), например, LocationDetailControllerIdentifier

  2. В методе, который запускаетсякоснувшись вспомогательного элемента выноски аннотации:

LocationDetailController *ldc = [self.storyboard instantiateViewControllerWithIdentifier:@"LocationDetailControllerIdentifier"];
// do further customization if needed
ldc.title = @"Title";
...
//assuming you are using UINavigationController
[self.navigationController pushViewController:ldc animated:YES];

-

0 голосов
/ 16 марта 2012

Похоже, это для MKMapView?

Вы не можете добавить аннотации в раскадровке для MKMapView.Вам нужно будет сделать это в коде вашего MKMapViewDelegate, следующим способом:

 - (MKAnnotationView *)mapView:(MKMapView *)aMapView viewForAnnotation:(id<MKAnnotation>)annotation
...