UINavigation:如何从呈现的模态视图中推送视图

时间:2011-08-24 10:44:02

标签: iphone objective-c uinavigationcontroller presentmodalviewcontroller

我在导航视图时遇到问题。

我有VC说,登录,我从另一个VC调用,如:

- (IBAction) btnAction 
{           Login * login = [[Login alloc] init];

        [self.navigationController pushViewController:login animated:YES];
}   

在登录VC中有两个按钮,例如Register和Forget Password,它们相应地调用另一个VC,RegisterVC和ForgetPassVC。

- (IBAction) btnRegisterNow : (id) sender
{

    aRegister = [[Register alloc] initWithNibName:@"Register" bundle:nil];
    [self.navigationController pushViewController:aRegister animated:YES];  
}

- (IBAction) btnForgotPassword : (id) sender
{
    forgotPassword = [[ForgotPasswd alloc] initWithNibName:@"ForgotPasswd" bundle:nil];
    [self.navigationController pushViewController:forgotPassword animated:YES];
}

我的问题:

当我通过[self.navigationController pushViewController:login animated:YES];呼叫登录时,一切正常。

但在某些VC中,我需要将登录页面显示为[self presentModalViewController:login animated:YES];此时,注册和忘记密码这两个按钮不起作用。按钮点击没有任何反应。

有什么问题?我认为bocz我已经添加了Login作为模态视图而不是pushViewConterller ???如果是的话,我该如何完成这项任务呢?

希望问题很清楚。

...谢谢

4 个答案:

答案 0 :(得分:5)

当您以模态方式呈现控制器时,它们不在导航控制器中。你应该写

UINavigationViewController *nvc = [[UINavigationViewController alloc] initWithRootViewController:login];
[login release];
[self presentModalViewController:nvc animated:YES];
[nvc release];

答案 1 :(得分:4)

我认为你应该推忘记密码&注册VC也作为模态控制器。你试过了吗?

答案 2 :(得分:0)

当你做的时候 [self presentModalViewController:login animated:YES];在这种情况下,您的视图控制器将被传递,现在当您尝试实现[self.navigationController pushViewController:forgotPassword animated:YES];它确实工作,因为你没有导航控制器。

是否有必要将您的登录信息显示为模态视图。 然后使用此代码: -

 - (IBAction) btnAction 
{
        Login *login=[[[Login alloc]initWithNibName:@"Login" bundle:nil]autorelease];
        UINavigationController *navController = [[[UINavigationController alloc] initWithRootViewController:login]autorelease];
        [[self navigationController] presentModalViewController:navController animated:YES];

    }   

现在您的忘记和注册btn操作将被调用,并将导航到相应的页面。

答案 3 :(得分:0)

使用您的登录视图控制器作为根控制器显示导航控制器。请检查以下代码。

UINavigationController * navController = [UINavigationController alloc] initWithRootController:loginController]; [self presentModalViewController:navController]; [navController release];