pushViewController не работает программно с раскадровкой - PullRequest
1 голос
/ 09 января 2012

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

РЕДАКТИРОВАТЬ

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

Ответы [ 2 ]

5 голосов
/ 09 января 2012

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

Вот документация .

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

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

Так что для вашего кода это будет:

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

Не забудьте установить идентификатор segue в конструкторе интерфейсов. Кроме того, убедитесь, что у вас есть один и тот же идентификатор и в коде, и в конструкторе интерфейса.

3 голосов
/ 09 февраля 2012

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

Тип получателя 'MyFirstViewController' для сообщения экземпляра не объявляет метод с селектором executeSegueWithIdentifer: sender:

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

[self performSegueWithIdentifier:@"You identifier" sender:self];
...