有3个视图控制器View1,View2
和View3
。
从view3
开始,我必须导航到view1
。
我尝试了以下代码,但它不起作用。
//in View3.m
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex;
{
appDelegate.isComingFromCountries = YES;
[self dismissViewControllerAnimated:YES completion:nil];
}
//in View2.m
-(void)viewWillAppear:(BOOL)animated
{
if (appDelegate.isComingFromCountries == YES)
{
appDelegate.isComingFromCountries = NO;
[self dismissViewControllerAnimated:YES completion:nil];
}
}
但是这段代码不起作用。我该如何处理?
答案 0 :(得分:2)
您可以使用presentingViewController
来解除它,
试试这个 -
[self.presentingViewController.presentingViewController dismissModalViewControllerAnimated:YES];
A - > B - > ç
答案 1 :(得分:1)
您必须使用延迟方法来执行动画,以便主线程应该在B viewController
中开始执行 [self performSelector:@selector(methodForDissmiss) withObject:nil afterDelay:0.5];
然后在选择器方法中编写dismiss代码以按逻辑工作。
答案 2 :(得分:0)
你可以尝试这个: 如果你正在将一个viewController推送到另一个并想要向后移动那么使用这个
[self.navigationController popViewControllerAnimated:YES];
如果您使用模型展示viewController并想要返回,则使用此
[picker dismissViewControllerAnimated:YES completion:nil];
你也可以尝试这个,因为首先你需要解雇第三个viewController然后第二个。
UIViewController *viewController = [self parentViewController];
[self dismissModalViewControllerAnimated:NO];
[viewController dismissModalViewControllerAnimated:YES];
答案 3 :(得分:0)
如果从一系列模态呈现的视图控制器返回到根视图控制器,则以下代码将在iOS6中起作用
[self.window.rootViewController dismissViewControllerAnimated:NO completion:nil];
答案 4 :(得分:0)
我想,它可能对你有所帮助。根据您的代码(在注释区域中),第二个视图控制器从第一个视图控制器推送,然后从第二个显示第三个。所以你必须将委托设置为第三位。并在第三个VC中执行以下代码。
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex;
{
appDelegate.isComingFromCountries = YES;
[self dismissViewControllerAnimated:YES completion:^{
[self.delegate dismissModal];
};
}
在SecondVC.m
-(void)dismissModal
{
[self.navigationController popViewControllerAnimated:NO];
}
答案 5 :(得分:0)
此外,您可以从view 1
点击view 3
,如下所示:
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
[self.navigationController dismissViewControllerAnimated:NO completion:nil];
[self.navigationController dismissViewControllerAnimated:YES completion:nil];
}