0

我有一种情况,我在应用程序中执行一些初始化。在第一次启动时,我必须提供带有“我同意/我不同意”按钮选择的 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 调用之前,那么登录视图当然不会显示。

在登录视图控制器代码中,按下登录按钮后我有这个:

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

如果我使用此代码运行,模式视图会消失,并且表格视图会短暂出现,然后消失,最终用户许可协议视图仍保留在屏幕上。如果我注释掉第二条语句,那么我永远不会看到表格视图。

我知道我错过了一些非常明显的东西,但我不知所措并且已经坚持了很长一段时间。

4

1 回答 1

2

我认为问题出在这里:

[self presentModalViewController:lvc animated:YES];

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

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

于 2011-01-20T15:07:15.427 回答