Passcode ViewController Презентация из модального представления - PullRequest
1 голос
/ 24 октября 2011

Я реализую функцию Passcode в своем приложении для iPhone, в котором UITabBarController используется в качестве контроллера корневого представления.У меня все работает отлично в большинстве ситуаций, отображая модальный Passcode ViewController из tabBarController, когда приложение переходит в фоновый режим, например так:

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    if ([[NSUserDefaults standardUserDefaults] valueForKey:kPasscodeStringKey]) {

        PasscodeEntryVC *passcodeView = [[PasscodeEntryVC alloc] init];
        UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:passcodeView];
        [tabBarController presentModalViewController:nav animated:NO];
    }
}

Моя проблема возникает, когда приложение уже отображает модальное представлениеконтроллер, когда он входит в фон.Затем не отображается представление пароля.Каков будет правильный способ сделать это?Вместо того, чтобы просто отправлять сообщение tabBarController для представления представления, я должен сначала проверить, чтобы увидеть, каково текущее представление, а затем представить этот пароль?Если да, то как это сделать?Спасибо.

Ответы [ 2 ]

0 голосов
/ 09 марта 2012

Что я обычно делаю, так это чтобы все мои представления, которые могут представлять контроллер модальных представлений, позволяли отклонять контроллер модальных представлений при отправке уведомления UIApplicationWillResignActiveNotification, в то время как в моем делегате приложения я настроил его точнокак у вас.

Одно предостережение заключается в том, что всякий раз, когда вы отклоняете упомянутые контроллеры модального представления, вам необходимо убедиться, что вы отклоняете их с animated:, установленным на NO, прежде чем представлять свой контроллер представления пароля.

0 голосов
/ 24 октября 2011

Первый - у вас утечка памяти, потому что у вас нет release вашего passcodeView и контроллера навигации nav.

Второе - вы можете сохранить простую переменную BOOL, которая обновляется при каждом представлении или отклонении модального представления.Если есть модальное представление, просто вызовите dismissModalViewController:animated: в вашем методе applicationDidEnterBackground:.

Вы также можете проверить контроллер переднего вида с помощью [self.navigationController.topViewController class], но я считаю, что это ненадежно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...