2013-12-08 6 views
1

У меня есть раскадровка (xcode5) со встроенным навигационным контроллером (контроллер навигации указывает на мой главный контроллер представления).prepareForSegue не исполняется

Я создал имя segue для нового контроллера представления, который я хочу открыть через свой код.

[[self navigationController] performSegueWithIdentifier:@"segueTo" sender:self]; 


- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    NSLog(@"Segue"); 
} 

Контроллер вида открывается, но метод readyForSegue никогда не запускается, почему?

Я попытался с

[self performSegueWithIdentifier:@"segueTo" sender:self]; 

, но затем я получаю сообщение об ошибке выполнения заявив, что не может найти имя SEGUE.

+0

Вы на самом деле задали имя segue в построителе интерфейса? – duci9y

+0

Да, я сделал, но ошибочно. Я сделал соединение с навигационным контроллером, а не с главного контроллера. Теперь, когда я сделал модальное соединение с основным контроллером, он работает :) Спасибо – gungner

ответ

1

Segue, который вы пытаетесь выполнить, должен быть связан с viewcontroller1 (встроенным в контроллер навигации) до newviewcontroller. В раскадровке убедитесь, что вы назвали соединительный сегмент как «segueTo». Тогда в viewcontroller1, звоните:

[self performSegueWithIdentifier:@"segueTo" sender:self]; 

вместо:

[[self navigationController] performSegueWithIdentifier:@"segueTo" sender:self]; 

Это должно решить вашу проблему.

0

Заменить строку:

[[self navigationController] performSegueWithIdentifier:@"segueTo" sender:self]; 

с

[self performSegueWithIdentifier:@"segueTo" sender:self]; 

Это должно помочь.

+0

Да, это работает, но мне нужно было установить правильное соединение с главным контроллером представления и новым контроллером представления. Я сделал это сначала с контроллера навигации, который был неправ. – gungner

Смежные вопросы