iOS Как скрыть предыдущее подпредставление
У меня есть ситуация, когда я выполняю некоторую инициализацию в приложении. При первом запуске я должен представить лицензионное соглашение с выбором кнопки "Я согласен / я не согласен". Когда выбран вариант "Я согласен", я отображаю модальное представление, запрашивающее имя пользователя и пароль. Это все отлично работает. Проблема в том, что после проверки имени пользователя и пароля модальное представление закрывается. У меня остается представление 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];
Если я запускаю с этим кодом, модальное представление исчезает, и табличное представление появляется на короткое время, а затем исчезает, а представление EULA остается на экране. Если я закомментирую второе утверждение, то я никогда не увижу табличное представление.
Я знаю, что мне не хватает чего-то невероятно очевидного, но я в растерянности и застрял в этом довольно долго.
1 ответ
Я думаю, что проблема здесь:
[self presentModalViewController:lvc animated:YES];
В основном self
там. Это означает, что вы представляете экран входа модально из того, что self
это: ваш EULA-ViewController. Вы не можете удалить экран EULA сейчас.
Я предлагаю сначала показать экран входа в систему, может быть, либо весь серый, либо вообще ничего не показывать, а также представить лицензионное соглашение с его помощью.