Я имею дело с проблемой segue, и это становится нелепо.Segue не работает визуально
я выступаю как это, как я всегда делаю в контроллере представления имени LoginViewController
:
- (void)loginSuccessfullyAccomplished
{
[self performSegueWithIdentifier:@"switchToHome" sender:self];
}
выше метод вызывается из другого класса, где некоторые другие подписи в действиях выполняются асинхронно, и когда его делается, он вызывает этот метод из LoginViewController.m
:
// Some Code
.
.
.
.
case VIDYO_CLIENT_OUT_EVENT_SIGNED_IN:
{
/*** Notifying upper layer (Login View Controller) from signing in ***/
UIStoryboard *storyboard;
if (IDIOM == IPAD)
{
storyboard = [UIStoryboard storyboardWithName:@"MasterStoryboard-iPad" bundle:nil];
}
else if (IDIOM == IPHONE)
{
storyboard = [UIStoryboard storyboardWithName:@"MasterStoryboard-iPhone" bundle:nil];
}
UINavigationController *nav = [storyboard instantiateInitialViewController] ;
dispatch_async(dispatch_get_main_queue(), ^{
[nav.viewControllers[0] loginSuccessfullyAccomplished];
});
break;
}
.
.
.
.
//Rest of the code
Теперь, вот проблема:
loginSuccessfullyAccomplished
вызывается успешно (используемые контрольные точки, чтобы убедиться в этом), но я не вижу, чтобы второй контроллер отображения отображался на экране.
У меня нет ошибок и исключений, если выполнено performSegue
, это означает, что я не ошибаюсь в отношении идентификатора сегмента или контроллера первого вида, из которого выполняется segue.
Я также уверен, что использую push-сегу, и я включил свои контроллеры представлений в навигационном контроллере.
Просто, чтобы убедиться, что я не делаю ничего плохого с самим сегментом, я применил метод prepareForSegue
, и он называется. Я также проверил, что он указывает исправить назначение:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.destinationViewController isKindOfClass:[UserHomeViewController class]])
{
NSLog(@"YES");
}
}
Второй контроллер вид визуально не похож на первый контроллер представления, так что я определенно заметит, если она меняется.
Я понятия не имею, что происходит не так. Любые предложения действительно оценены.
Спасибо.
P.S: Я знаю, что есть десятки «performSegueWithIdentifier
не называемых» вопросов, но ни один из них не помог моему делу !!!
С другой стороны, я думаю, что я ошибаюсь в выборе экземпляра 'LoginViewController', на котором я вызываю метод! –
Почему вы начинаете новую раскадровку? – duci9y
Да. Вот оно @ Unkn0wn.Bit. Я бы отправился с объявлением в мир через NSNotificationCenter. Вот очень проголосовавший пример http://stackoverflow.com/questions/2191594/send-and-receive-messages-through-nsnotificationcenter-in-objective-c – danh