2012-01-22 1 views
1

Я работаю над приложением iphone в IOS5, который использует раскадровки пользователей. Я создал раскадровку, которая использует mapkit с аннотациями. Я смог подключить push segues для кнопок и выбора строк в таблице, используя редактор Storyboard. У меня есть опыт работы с настраиваемыми выносками в MapKit, но я не могу понять, как нажать контроллер представления, определенный в раскадровке из выноски. Я собирался использовать [self.navigationController pushViewController:abc animated:YES], однако для этого мне нужно либо получить контроллер вида из раскадровки, либо инициализировать новый диспетчер представлений. У меня нет доступа к имени NIB, так как нет имени NIB. Как получить доступ к экземпляру ViewController, определенному в раскадровке? Есть ли способ использовать редактор раскадровки, чтобы связать PUSH Seques с пользовательской надписью аннотации карты?Mapcall out in IOS5 с раскадрой

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

+1

Просто найти ссылку, которая объяснила, как инстанцировать ViewController в раскадровке: UIStoryboard * раскадровка = [UIStoryboard storyboardWithName: @ расслоение "MainStoryboard": [NSBundle mainBundle]]; myViewController * myVC = [storyboard instantiateViewControllerWithIdentifier: @ "myViewController"]; Это сработало. Я смог нажать контроллер вида, как только я создал его с помощью этого кода. Моя проблема решена. – aullman

+0

Пожалуйста, добавьте свое решение в качестве ответа на вопрос, а затем примите свой ответ. Можно согласиться с вашим собственным ответом на ваш вопрос. –

ответ

1

Вы можете создавать сегменты между контроллерами представления, которые программно выполняются путем перетаскивания с одного контроллера изображения на другой. Затем в методе MKMapViewDelegate, - (void)mapView:annotationView:calloutAccessoryControlTapped:, вы можете программно выполнять сегмент, пока вы дали segue идентификатор в раскадровке.

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control 
{ 
    // I've chosen to pass the annotation view as the sender here. 
    // I'm assuming this view controller will be configured with data that 
    // is backing the annotation view. By passing the view, you will be able 
    // to inspect it and it's backing annotation in `prepareForSegue:sender:` 
    [self performSegueWithIdentifier:@"ShowSomeViewController" sender:view]; 
} 
+0

Спасибо. Это очень хороший вариант. Я это попробую. – aullman

1

Я добавил кнопку и выполнил управление, перетащив ее на контроллер вида. После этого я использую скрытое свойство кнопки, чтобы убедиться, что оно скрыто. Вы не можете просто управлять перетаскиванием карты на другой контроллер представления. Вы должны использовать кнопку для этого. Убедитесь, что вы указали свой идентификатор segue.

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control { 
    [self performSegueWithIdentifier:@"detailSegue" sender:view]; 
} 
+0

Как я могу использовать это и передавать некоторые данные в segue? Я пробовал использовать prepareForSegue или даже shouldPerformSegue ... но, кажется, передал эти два метода – user1372829