我遇到在应用程序中执行一些初始化的情况。首次启动时,我必须向EULA提供“我同意/我不同意”按钮选择。选择“我同意”后,我将显示一个模式视图,提示您输入用户名和密码。这一切都很好。问题在于,验证用户名和密码并关闭模式视图之后。我留下的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视图仍保留在屏幕上。如果我注释掉第二条语句,那么我永远不会看到表视图。

我知道这是我遗漏的非常明显的东西,但我茫然不知所措,并且已经坚持了很长时间。

最佳答案

我认为问题出在这里:

[self presentModalViewController:lvc animated:YES];


主要是self在那里。这意味着您可以从self模样显示登录屏幕:EULA-ViewController。您现在无法删除EULA屏幕。

我建议先显示登录屏幕,或者要么全部显示为灰色,要么根本不显示任何内容,然后以模态方式显示EULA。

关于iphone - iOS如何隐藏先前的 subview ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4748577/

10-11 04:35