如何移回viewcontroller?

时间:2014-01-16 09:11:59

标签: ios iphone ios4 uiviewcontroller

有3个视图控制器View1,View2View3

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];
    }
    }

但是这段代码不起作用。我该如何处理?

6 个答案:

答案 0 :(得分:2)

您可以使用presentingViewController来解除它,

试试这个 -

[self.presentingViewController.presentingViewController dismissModalViewControllerAnimated:YES];

A - > B - > ç

在模态C中运行上述代码会将您带回A.

答案 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];

}