怎么来presentModalViewController第二次不工作?

时间:2011-04-20 03:22:56

标签: iphone ios uitabbarcontroller

我正在使用一个基于选项卡的应用程序,该应用程序显示一个名为“overview”的presentModalViewController,其上有2个按钮。

为了调用它,我在app delegate中使用以下代码:

Overview *overview = [[Overview alloc] initWithNibName:@"Overview" bundle:nil];
    [self.tabBarController presentModalViewController:overview animated:YES];

当概述显示时,它有一个被点击的按钮,我使用以下代码:

-(IBAction) btnLoginPressed{

    [self dismissModalViewControllerAnimated:YES]; //get rid of view
    Login *login = [[Login alloc] initWithNibName:@"Login" bundle:nil];
    [self.tabBarController presentModalViewController:login animated:YES];
    [login release];    
}

然而登录prsentModalViewController永远不会出现。有人可以解释为什么以及我可以做些什么来展示它?

由于

1 个答案:

答案 0 :(得分:2)

当您呈现模态视图控制器时,可以从视图中当前的视图控制器执行此操作。

假设您在Overview.m中进行了第二次视图控制器的模态显示,请将您的代码更改为以下内容:

-(IBAction) btnLoginPressed {
    Login *login = [[Login alloc] initWithNibName:@"Login" bundle:nil];
    [self presentModalViewController:login animated:YES];
    [login release];    
}

您不需要首先关闭概述,事实上您不应该因为动画不能相互协作而工作。

当您最终解除登录时(或者您想要的深度),您可以根据需要发送dismissModalViewController:animated:。要返回标签栏的控制器,请使用:

[self.tabBarController dismissModalViewController:animated]

这将超出您的问题的范围和我必须回答的时间,但您应该花些时间并真正研究有关实施View Controllers的文档。我绝对建议遵循Apple的代码风格指南作为一个建议,使您的代码更具可读性(例如overviewViewController vs overview)。很明显,你只是在学习,所以坚持下去。