iOS如何隐藏先前的子视图

时间:2011-01-20 14:53:33

标签: iphone ios views subviews

我有一种情况,我在应用程序中执行一些初始化。首次启动时,我必须提交一份EULA,其中我同意/我不同意按钮选择。当我同意选择时,我显示一个模态视图,提示输入用户名和密码。一切正常。问题是在验证用户名和密码并解除模态视图后。我的EULA视图仍然显示在屏幕上,而不是应用程序的基表视图。我在EULA视图控制器代码中执行以下操作:

- (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 个答案:

答案 0 :(得分:2)

我认为问题在于:

[self presentModalViewController:lvc animated:YES];

主要是那里的self。这意味着您从self的模式提供登录屏幕:您的EULA-ViewController。您现在无法删除EULA屏幕。

我建议首先显示登录屏幕,或者全部显示为灰色或根本不显示任何内容,并从中以模态方式呈现EULA。