从第二个ViewController返回第一个ViewController

Ric*_*ams 2 xcode objective-c uiviewcontroller ios

我正在构建一个目前有3个ViewControllers的应用程序.其中一个在成功登录后使用,因此与此问题无关.

当我发现故事板不能给我提供我需要的精细控制时,我正在使用故事板的混合物并以编程方式构建.

第一个ViewController构建在我的'MainStoryboard'中.它有一个登录表单和底部的信息按钮.我通过在didFinishLaunchingWithOptions中执行以下操作将其链接到我的AppDelegate :

ViewController *viewController = (ViewController *)self.window.rootViewController;
Run Code Online (Sandbox Code Playgroud)

因为我想强制渲染UIWebView(另一个故事),我以编程方式创建第二个视图.我在didFinishLaunchingWithOptions中执行以下操作:

infoViewController = [[InfoViewController alloc] init];
[infoViewController view];
Run Code Online (Sandbox Code Playgroud)

在我的两个ViewControllers中,我设置了一个指向appDelegate的链接,如下所示:

appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
Run Code Online (Sandbox Code Playgroud)

我的第一个ViewController中有一个信息按钮,可以将您带到infoViewController.点击时调用以下代码:

appDelegate.infoViewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:appDelegate.infoViewController animated:YES];
Run Code Online (Sandbox Code Playgroud)

以上工作对我来说很好,翻转屏幕并显示InfoViewController.

在我的InfoViewController上,我有一个按钮,可以带你回到登录页面,我已经尝试了各种各样的工作,但它只是崩溃了我的应用程序.似乎没什么用.我尝试过以下方法:

appDelegate.viewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:appDelegate.viewController animated:YES];
Run Code Online (Sandbox Code Playgroud)

[self.navigationController popToRootViewControllerAnimated:YES];
Run Code Online (Sandbox Code Playgroud)

[self.navigationController popViewControllerAnimated:YES];
Run Code Online (Sandbox Code Playgroud)

[self.navigationController popToViewController:appDelegate.viewController animated:YES];
Run Code Online (Sandbox Code Playgroud)

我怀疑当你有一个导航视图控制器并且想要回到根目录时,最后3个可能更多吗?我不确定,但无论哪种方式都不起作用.我以前使用故事板工作,所以我相信它应该很容易!如上所述,我切换到以编程方式创建infoViewController,以便在视图出现之前强制UIWebView呈现.

任何帮助非常感谢.

kap*_*ppa 6

你可以这样做:

[self dismissModalViewControllerAnimated:YES];
Run Code Online (Sandbox Code Playgroud)


Dom*_*adl 5

你应该用它.

[self dismissModalViewControllerAnimated:YES];
Run Code Online (Sandbox Code Playgroud)