0

我试图一个接一个地关闭两个视图控制器,在我的第一个视图控制器中,我一直在上传功能,当完成当前视图控制器时,它会被关闭。

现在,在上传 ViewController 被关闭后,我来到了之前的 viewcontroller。我也想取消那个“previousViewController”。

关闭“uploadViewController”后,我在“PreviousViewController”上调用方法

这是我尝试的方法:

在 UploadViewController 中:

[self dismissViewControllerAnimated:YES completion:^{

            [previousView dismissME];
        }];

现在当我来到“PreviousViewController”

这是那个dismissME方法:

-(void)dismissME {

    if (![[self presentingViewController] isBeingDismissed]) {
        NSLog(@"Dismiss ME");
        [self dismissViewControllerAnimated:YES completion:NULL];
    }
}

我得到了“解雇我”的日志,但 viewController 没有被解雇。

有任何想法吗 .. ?如何实现这一目标..?

4

6 回答 6

5

此代码有助于消除前两个视图控制器。

[[[self presentingViewController] presentingViewController] dismissModalViewControllerAnimated:YES];
于 2013-05-14T06:10:25.483 回答
3

1) 在uploadViewController.h中创建一个名为 parent 的变量,如下所示:

@property (nonatomic, strong) UIViewController *parent;

2)当它从PreviousViewController呈现时设置uploadViewController self的父级,如下所示:

    uploadViewController *controller = [[uploadViewController alloc] initWithNibName:@"uploadViewController" bundle:nil];
    controller.parent = self;
    [self presentViewController:controller animated:YES completion:nil];

3) 在PreviousViewController中定义一个方法来关闭 View,如下所示:

- (void) dismissView{
    NSLog(@"Dismiss");
    [self dismissViewControllerAnimated:YES completion:nil];
}

4)像这样关闭uploadViewController时调用该方法,

[self dismissViewControllerAnimated:YES completion:^{
        [(ParentModeViewController *)_parent dismissView];
    }];

我测试了它,它对我来说很好,希望它对你有帮助

于 2013-05-14T06:18:34.333 回答
0

您可以使用:

[self.parentViewController.parentViewController dismissModalViewControllerAnimated:YES];
于 2013-05-14T06:09:17.380 回答
0

尝试这个 :

   -(void)myDismiss {
       [self dismissViewControllerAnimated:YES completion:nil];
   }


   -(void)dismissME {
       if (![[self presentingViewController] isBeingDismissed]) {
           NSLog(@"Dismiss ME");
           [NSTimer scheduledTimerWithTimeInterval:0.8 target:self selector:@selector(myDismiss) userInfo:nil repeats:NO];
       }
   }

使用 PreviousViewController 的 viewDidAppear 方法编辑 尝试

    -(void)viewDidAppear:(BOOL)animated
   {
       [super viewDidAppear:animated];
       [NSTimer scheduledTimerWithTimeInterval:0.8 target:self selector:@selector(myDismiss) userInfo:nil repeats:NO];
   }

如果它不起作用,则增加 scheduleTimerWithTimeInterval。如果它有效,则将 scheduleTimerWithTimeInterval 减少到 0.7,0.6 ...

于 2013-05-14T06:07:17.867 回答
0

您需要先关闭uploadViewController,然后再关闭PreviousViewController。执行以下代码:

-(void)dismissView{

    UIViewController *vc = [self parentViewController];
    [self dismissModalViewControllerAnimated:NO];
    [vc dismissModalViewControllerAnimated:YES];

}

希望此代码对您有所帮助。

于 2013-05-14T06:12:26.447 回答
0

尝试检查您是否多次添加视图控制器,例如循环或其他内容,以便即使您删除一个实例,视图控制器的另一个实例仍然存在。

于 2013-05-14T06:18:21.683 回答