在iOS中从已呈现的视图控制器中推送视图

28

简而言之:

我想知道如何从被呈现的视图控制器中推出另一个视图控制器。

简要说明:

我有一个名为MainViewController的视图控制器,其中有一个按钮。当我点击这个按钮时,我会呈现一个名为LoginViewController的视图。

在这个页面(LoginViewController)上,我再次有一个按钮,当我点击它时,我尝试推出我的视图控制器(称为HomeViewController), 但它没有推出。

这是我的代码片段:

MainViewController.m

- (IBAction)LoginClicked:(id)sender {
    LoginViewController *vc = [[LoginViewController alloc] init];
    [self presentViewController:vc animated:YES completion:nil];
}

LoginViewController.m

- (IBAction)buttonActionMethodOnLoginView:(id)sender{
     NSLog(@"viewControllers %@",APPDELEGATE.nav.viewControllers);
     //LoginViewController is not in this array
     HomeViewController *obj = [[HomeViewController alloc] init];
     [self.navigationController pushViewController:obj animated:YES];
}

但是,对我来说这并没有用。同时,我在push之前打印了a stack of view controllers,但它并没有包含LoginViewController。所以,在没有把LoginViewController添加到a stack of view controllers的情况下,如何从LoginViewController推到HomeViewController?当我从HomeViewController返回时,LoginViewController应该被打开。这是否可能使用单个NavigationController?请注意:这里只是举了一个例子,介绍了使用登录、主页和主控制器。但我想要其他屏幕也能实现这样的功能。

2
你的LoginViewController必须有它的NavigationController来从LoginViewController进行推送。 - technerd
@technerd:是的,但我该如何完成? - Meet Doshi
@MeetDoshi,你有没有看过我的答案?有帮助到你吗? - Hemang
@MeetDoshi,你最近更新的问题完全改变了它,现有的回答都不符合这个“新”的问题。 - Nat
我知道那个.. 但是我想要那个.. 谢谢你回答解决我的问题.. 请根据这个帮助我.. 我最近对这个问题的更新已经成为了被接受的答案.. - Meet Doshi
显示剩余2条评论
11个回答

3
将此代码放在 objective c 中的按钮操作中即可。
UIViewController *yourViewControllerName = [self.storyboard instantiateViewControllerWithIdentifier:@"yourViewControllerName "];

[[self navigationController] pushViewController:yourViewControllerName  animated:YES];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接