prepareForSegue не вызывается

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

Я вызываю следующее из моего 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;
    }
}

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


person Toby Cronin    schedule 21.02.2012    source источник


Ответы (1)


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

person Janardan Yri    schedule 21.02.2012
comment
Ах, глупая ошибка. Из другого потока я подумал, что должен представить его из splitViewController, иначе это не сработает. Изменен переход от detailViewController и изменен на [selfperformSegueWithIdentifier:@DisplayLoginView sender:self]; и это работает. Спасибо! - person Toby Cronin; 21.02.2012
comment
Здорово, что вы действительно опубликовали то, что сработало. Будет использовать это для хранения данных между представлениями с использованием переходов. - person chwi; 20.07.2012