iOS Как скрыть предыдущее подпредставление - PullRequest
0 голосов
/ 20 января 2011

У меня есть ситуация, когда я выполняю некоторую инициализацию в приложении. При первом запуске я должен представить лицензионное соглашение с выбором кнопки «Я согласен / Я не согласен». Когда выбран вариант «Я согласен», я отображаю модальное представление, которое запрашивает имя пользователя и пароль. Это все отлично работает. Проблема в том, что после проверки имени пользователя и пароля модальное представление отклоняется. У меня остается представление EULA, все еще отображаемое на экране, а не представление основной таблицы приложения. Я делаю следующее в коде EULA viewcontroller:

- (IBAction)didAgree:(id)sender {
    LoginViewController *lvc=[[[LoginViewController alloc] init] autorelease];
    lvc.modalTransitionStyle=UIModalTransitionStyleCoverVertical;
    [self presentModalViewController:lvc animated:YES];
    [self.view removeFromSuperview];
}

Если переместить последнюю строку (removeFromSuperview) до вызова presentModal, то, конечно, представление Login не отображается.

В коде контроллера вида входа в систему у меня это после нажатия кнопки входа в систему:

[[self parentViewController] dismissModalViewControllerAnimated:YES];
[[self parentViewController].view removeFromSuperview];

Если я запускаю с этим кодом, модальное представление исчезает, и на короткое время появляется табличное представление, а затем исчезает с оставшимся на экране представлением лицензионного соглашения. Если я закомментирую второе утверждение, то никогда не увижу табличное представление.

Я знаю, что мне не хватает чего-то невероятно очевидного, но я в растерянности и застрял в этом довольно долго.

1 Ответ

2 голосов
/ 20 января 2011

Я думаю, что проблема здесь:

[self presentModalViewController:lvc animated:YES];

В основном self там. Это означает, что вы представляете экран входа модально из того, что self: ваш EULA-ViewController. Вы не можете удалить экран EULA сейчас.

Я предлагаю сначала показать экран входа в систему, может быть, либо все серое, либо вообще ничего не отображать, а также представить лицензионное соглашение с его помощью.

...