2013-10-11 4 views
-1

Я попытался сделать segue, используя раскадровку от одного ViewController к другому, но он сделал исключение.Работает ли segues только с навигационными контроллерами?

Выполняет ли segue работу только с NavigationControllers? Он работал, когда я пробовал это именно так.

+2

Какое исключение? может быть, как вы используете seague неправильно. Проверьте идентификатор, если он соответствует тому, что вы указали в своем рассказчике. –

ответ

0

Если Segue создается из одного ViewController к другому, то вам необходимо выполнить его программно, как только визуальные элементы, такие как представления могут реагировать на пользовательские события, поэтому без взаимодействия с пользователем нет никакого способа для ViewController знать, когда следует выполнить Segue.

Вот как вы можете сделать это программно.

  1. ID Segue Идентификатор интерфейса.

  2. Звоните [self performSegueWithIdentifier:@"MySegueIdentifier" sender:nil]; в ответ на событие, то есть TouchUpInside, чтобы выполнить его.

Это сообщение имеет немного больше информации: Segue implementation via code

ПРИМЕЧАНИЕ: Если вы не используете NavigationController, то вы не можете использовать Вдавите Segue переход так, что требует NavigationController. Вы все равно можете использовать тип перехода Modal или Custom, если вы хотите создать свой собственный переход.

0

, если у вас есть ViewControllers внедренные в UINavigationController с использованием раскадровки из ViewControllerA в ViewControllerB:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([[segue identifier] isEqualToString:@"showDetail"]) 
    { 
     UINavigationController *navController = (UINavigationController *)segue.destinationViewController; 
     ViewControllerB *viewControllerB = (ViewControllerB *)navController.topViewController; 

     // Pass data (for example a NSString object) 
     viewControllerB.aString = myString; 
    } 
} 
Смежные вопросы