2012-01-09 7 views
1

Когда я нажимаю вид с помощью segues (напрямую, перетаскивая его на раскадровку), он отлично работает, и загружается следующий вид. Однако, когда я пытаюсь реализовать все это программно нажать вид, когда я нажимаю на правую стрелку на PIN (в картах), я немного запутался:pushViewController не работает программно с раскадровкой

EDIT

-(void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control 
{ 
    NSLog(@"calloutAccessoryControlTapped: enseigneDeLaStation"); 
    [self performSegueWithIdentifer:@"You identifier" sender:self]; 
} 

я получил эту ошибку:

Receiver Type 'MyFirstViewController' for instance message does not declare a method with selector performSegueWithIdentifer:sender: 

ответ

5

Вы должны использовать UIViewController сек экземпляр метода performSegueWithIdentifier:sender:. Он инициирует segue с указанным идентификатором из файла раскадровки контроллера просмотра программным путем.

Here is the documentation.

Пример кода будет: (если вы вызываете это в контроллере представления

[self performSegueWithIdentifier:@"Your identifier" sender:self]; 

Так что для вашего кода было бы:.

-(IBAction)goToNextView{ 
    NSLog(@"The button is clicked"); 
    [self performSegueWithIdentifier:@"Your identifier" sender:self]; 
} 

Не забудьте установить SEGUE Идентификатор в построителе интерфейса. Также убедитесь, что у вас есть тот же идентификатор как в вашем коде, так и в интерфейсе.

+0

Привет, Пфиц, не могли бы вы проиллюстрировать мне пример использования? thanx заблаговременно – Malloc

+0

Hi @Malek. Я обновил свой ответ и надеюсь, что теперь станет более ясным. – Pfitz

+0

Pfitz. На самом деле, я пытаюсь его до комментирования, но у меня есть ошибка: 'Тип получателя 'MyFirstViewController', например, сообщение не объявляет метод с селектором performSegueWithIdentifer: sender:', также , я пытаюсь нажать представление, когда нажимаю на стрелку вправо PIN-кода при использовании Карты, поэтому мой код находится в методе 'calloutAccessoryControlTapped', я собираюсь обновить сообщение, чтобы сделать мой вопрос ясным. – Malloc

3

Малек правильный. Пример Pfitz возвращает

Receiver Type 'MyFirstViewController' for instance message does not declare a method with selector performSegueWithIdentifer:sender:

Это связано с опечаткой. Правильный метод:

[self performSegueWithIdentifier:@"You identifier" sender:self]; 
Смежные вопросы