我正在构建一个当前有 3 个 ViewController 的应用程序。其中之一是在成功登录后使用的,因此与这个问题无关。
当我发现 Storyboard 无法提供所需的精细控制时,我混合使用 Storyboard 并以编程方式构建内容。
第一个 ViewController 内置在我的“MainStoryboard”中。它的底部有一个登录表单和一个信息按钮。我通过在内部执行以下操作将其链接到我的 AppDelegatedidFinishLaunchingWithOptions:
ViewController *viewController = (ViewController *)self.window.rootViewController;
因为我想强制渲染 UIWebView(另一个故事),所以我以编程方式创建了第二个视图。我在里面做了以下事情didFinishLaunchingWithOptions:
infoViewController = [[InfoViewController alloc] init];
[infoViewController view];
在我的两个 ViewController 中,我设置了一个指向 appDelegate 的链接,如下所示:
appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
我的第一个 ViewController 中有一个信息按钮,可将您带到 infoViewController。点击时它会调用以下代码:
appDelegate.infoViewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:appDelegate.infoViewController animated:YES];
上面的内容对我来说效果很好,翻转屏幕并显示 InfoViewController。
在我的 InfoViewController 上,我有一个按钮可以带您返回登录页面,我已经尝试了各种方法来使其正常工作,但它只会使我的应用程序崩溃。似乎没什么作用。我已经尝试过以下方法:
appDelegate.viewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:appDelegate.viewController animated:YES];
and
[self.navigationController popToRootViewControllerAnimated:YES];
and
[self.navigationController popViewControllerAnimated:YES];
and
[self.navigationController popToViewController:appDelegate.viewController animated:YES];
我怀疑当你有一个导航视图控制器并且你想返回到根目录时,最后 3 个可能更多地与此有关?我不确定,但无论如何它都不起作用。我之前使用故事板进行过这项工作,所以我确信它应该很容易!如前所述,我转而以编程方式制作 infoViewController,以便我可以强制 UIWebView 在视图出现之前呈现。
非常感谢任何帮助。