从第二个ViewController回到第一个ViewController
我正在构build一个当前有3个ViewController的应用程序。 其中一个在成功login后使用,因此在这个问题中不相关。
当我发现故事板不给我需要的精细控制时,我正在使用故事板的混合物,并以编程方式构build事物。
第一个ViewController是build立在我的“MainStoryboard”。 它有一个login表单和一个信息button在底部。 我通过在didFinishLaunchingWithOptions中执行以下步骤将其链接到我的AppDelegate:
ViewController *viewController = (ViewController *)self.window.rootViewController;
因为我想强制渲染一个UIWebView(另一个故事),我编程创build第二个视图。 我在didFinishLaunchingWithOptions中执行以下操作:
infoViewController = [[InfoViewController alloc] init]; [infoViewController view];
在我的两个ViewController中,我设置了一个到appDelegate的链接,如下所示:
appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
我有一个信息button在我的第一个ViewController,把你带到infoViewController。 点击时会调用以下代码:
appDelegate.infoViewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; [self presentModalViewController:appDelegate.infoViewController animated:YES];
上面的工作对我来说很好,在屏幕上翻转并显示InfoViewController。
在我的InfoViewController上,我有一个button,应该带你回到login页面,我已经尝试了各种各样的工作,但它只是崩溃我的应用程序。 似乎没有任何工作。 我已经尝试了以下内容:
appDelegate.viewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; [self presentModalViewController:appDelegate.viewController animated:YES];
和
[self.navigationController popToRootViewControllerAnimated:YES];
和
[self.navigationController popViewControllerAnimated:YES];
和
[self.navigationController popToViewController:appDelegate.viewController animated:YES];
我怀疑,当你有一个导航视图控制器,你想回到根目录时,最后3个可能更多? 我不确定,但无论如何,这是行不通的。 我曾经使用故事板以前的工作,所以我相信它应该是容易的! 如上所述,我切换到以编程方式制作infoViewController,以便在视图出现之前强制UIWebView呈现。
任何帮助非常感谢。
你可以这样做:
[self dismissModalViewControllerAnimated:YES];
你应该使用这个。
[self dismissModalViewControllerAnimated:YES];
您应该使用主控制器在其他视图控制器之间进行切换。 将根控制器的视图更改为其他视图控制器之一(如果需要,请照常应用animation)。 在你的其他视图控制器中保存一个指向你的根控制器的指针,并调用self.rootController.view = <desired_controller_instance>.view
我想你展示你的InfoViewController的方式是错误的。 这样做的方式如下:
在您的ViewController中,为信息button创build一个操作:
- (IBAction)infoButtonTapped:(id)sender { InfoViewController *infoViewController = [[InfoViewController alloc] init]; infoViewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; [self presentModalViewController:infoViewController animated:YES]; }
而在你的InfoViewController中,你的button的动作应该带你回写:
- (void)takeBackToViewController { [self dismissModalViewControllerAnimated:YES]; }
希望它的作品。
在现有的控制器中,你也可以使用它
if(self.parentViewController) [self.parentViewController dismissModalViewControllerAnimated:YES]; else [self.presentingViewController dismissModalViewControllerAnimated:YES];
消除电stream控制器。