2012-02-21 5 views
2

Я использую приложение шаблона мастера. Я добавил modal segue из SplitViewController и дал ему идентификатор «DisplayLoginView».prepareForSegue не называется

я называю вытекающее из моей detailViewController:

- (void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:YES]; 
    [self.splitViewController performSegueWithIdentifier:@"DisplayLoginView" sender:self.splitViewController]; 
} 

Я также метод prepareForSegue определен в detailViewController:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    NSLog(@"Source Controller = %@", [segue sourceViewController]); 
    NSLog(@"Destination Controller = %@", [segue destinationViewController]); 
    NSLog(@"Segue Identifier = %@", [segue identifier]); 
    if ([segue.identifier isEqualToString:@"DisplayLoginView"]) 
    { 
     PrometheusLoginViewController *loginViewController = (PrometheusLoginViewController *)segue.destinationViewController; 
     loginViewController.delegate = self; 
    } 
} 

Любая идея о том, почему это не называется?

ответ

6

Вы просите splitViewController выполнить segue, но вы определяете prepareForSegue в detailViewController. Они должны быть на одном и том же объекте для запуска готовой системы.

+0

Ах, глупые ошибки. Из другого потока я думал, что должен был представить его из splitViewController, и он не будет работать иначе. Изменил segue, чтобы перейти от detailViewController и изменил его на [selfperformSegueWithIdentifier: @ "DisplayLoginView" отправитель: self]; и это работает. Благодаря! –

+0

Отлично, что вы действительно опубликовали то, что сработало. Будет использоваться для хранения данных между представлениями с помощью segues. – chwi