Вызов presentModalViewController сразу после dismissModalViewControllerAnimated имеет проблемы - PullRequest
4 голосов
/ 01 мая 2011

У меня есть код

- (void)matchmakerViewController:(GKMatchmakerViewController *)viewController didFindMatch:(GKMatch *)match
{
    [menuViewController dismissModalViewControllerAnimated:YES];
    [GameKitWrapper getSingleton].match = match;
    match.delegate = [GameKitWrapper getSingleton].remotePlayer;
    [menuViewController presentModalViewController:avatarSelectionViewController
                                      animated:YES];
}

Но у меня проблема в том, что увольнение работает, но не в настоящее время. Когда я изменил dismissModalViewControllerAnimated: YES на dismissModalViewControllerAnimated: НЕТ, это сработало, но выглядит не очень хорошо.

Любая помощь приветствуется.

Ответы [ 3 ]

5 голосов
/ 01 мая 2011

@ adam имеет правильную идею, но вы не хотите ждать какой-то произвольной задержки.Это хрупко, потому что анимация может занять какое-то время.Вы хотите подождать, пока предыдущий контроллер представления фактически завершит удаление.Лучшее место в моем опыте, чтобы поместить это в ваш текущий контроллер взгляда viewDidAppear:.Это будет вызвано после того, как ваш модал полностью исчезнет.См. этот вопрос , где приведен пример кода для решения аналогичной проблемы.

0 голосов
/ 21 июля 2012

Попробуйте позвонить:

[menuViewController dismissModalViewControllerAnimated:NO];

, прежде чем позвонить:

[menuViewController presentModalViewController:avatarSelectionViewController
                    animated:YES];
0 голосов
/ 01 мая 2011

Попробуйте подождать секунду ....

- (void)matchmakerViewController:(GKMatchmakerViewController *)viewController didFindMatch:(GKMatch *)match
{
    [menuViewController dismissModalViewControllerAnimated:YES];
    [GameKitWrapper getSingleton].match = match;
    match.delegate = [GameKitWrapper getSingleton].remotePlayer;
    [self performSelector:@selector(presentModal) withObject:nil afterDelay:1.0];
}

- (void)presentModal {   
    [menuViewController presentModalViewController:avatarSelectionViewController
                                          animated:YES];
}
...