如何从模态视图控制器中推出视图控制器?

4

我有一个名为FavouriteViewController的控制器,在其中有一个按钮,点击该按钮后,我会模态呈现一个名为LoginViewController的视图控制器(使用故事板)。

在这个页面(LoginViewController)上,我再次有一个按钮,点击该按钮后我想推出我的视图控制器。

这是可能的吗?


3
这将导致非常不寻常的用户界面体验。但是,如果您想要从任何视图控制器推出基本视图控制器,那么基本视图控制器必须嵌入一个“UINavigationController”。您可以尝试将您的“LoginViewController”嵌入到该导航控制器中:在IB中选择它,单击编辑器->嵌入->导航控制器。但请先重新考虑您的UI,因为这看起来不是一个好的解决方案。 - Rok Jarc
3个回答

7
你可以尝试以下代码,它可能会帮助你获得所需的解决方案。
1)通过编写以下代码显示 LoginViewController
    LoginViewController *login = [[[LoginViewController alloc]initWithNibName:@"LoginViewController" bundle:nil]autorelease];
    UINavigationController *nc = [[[UINavigationController alloc] initWithRootViewController:login]autorelease];
    nc.navigationBar.hidden = YES;
    [self.navigationController presentModalViewController:nc animated:YES];

2) 现在从 LoginViewController,您可以按照以下方式推送您的 MyviewController

    MyviewController *adss = [[[MyviewController alloc]initWithNibName:@"MyviewController" bundle:nil]autorelease];
    [self.navigationController pushViewController:adss animated:YES];

应用程序崩溃,显示:`NSInvalidArgumentException',原因:'应用程序试图以模态方式呈现活动控制器。 - Krunal
你需要在 FavouriteViewController 中编写第一个代码以呈现 LoginViewController。你正在做同样的事吗? - Rahul Patel
屏幕在写入以下代码后变黑,没有任何显示:CRLoginWithViewController *login = [[CRLoginWithViewController alloc]init]; UINavigationController *nc = [[UINavigationController alloc] initWithRootViewController:login]; nc.navigationBar.hidden = YES; [self.navigationController presentViewController:nc animated:YES completion:Nil]; - Krunal
你没有使用.xib文件吗? - Rahul Patel
不,我没有使用.xib文件,问题仍然存在。 - Krunal
你在-(id)init方法中创建了任何视图吗? - Rahul Patel

2

使用UINavigationController

 UINavigationController *nav=[[UINavigationController alloc]initWithRootViewController:self.LoginViewController];
 [self presentModalViewController:nav animated:YES];

在此之后,您可以从已呈现的视图控制器(LoginViewController)中推送任何视图控制器。

这是如何展示模态视图控制器的方法。OP想要从以模态方式呈现的视图控制器推送另一个视图控制器。(我想是这样的) - Rok Jarc
1
他正在以模态方式呈现一个 UINavigationController,这是一个可能的答案 :) - KIDdAe
如果您认为我的回答有帮助,请点赞支持 :) - freelancer

0

在这里

[self.parentViewController.navigationController pushViewController:newViewController animated:YES];

这将实际在父视图中推送一个VC而不是在当前显示的VC中。 - OhadM

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