dismissViewControllerAnimated完成块不叫

问题描述:

我试图解雇这样一个视图控制器:dismissViewControllerAnimated完成块不叫

[composeViewController dismissViewControllerAnimated:YES completion:^{ 

    NSLog(@"Hello"); // Never outputted 
}]; 

视图控制器被驳回,但由于某些原因,完成块永远不会被调用。

我从未有过完成块没有被调用与其他视图控制器的任何问题。

此视图控制器是“特殊”,虽然,因为它添加为子视图控制器(我还没有与以前在我的应用程序的工作)。这是否会带来任何副作用,为什么完成块没有被调用?

它加入这样的:

UIViewController *rootVC = [UIApplication sharedApplication].delegate.window.rootViewController; 
[rootVC addChildViewController:self]; 
[rootVC.view addSubview:self.view]; 
[self didMoveToParentViewController:rootVC]; 
+0

'addChildViewController:'实际上是推视图控制器到导航堆栈。你必须弹出它关闭该块之前,可以发射 – CodaFi

+0

我试图做'[composeViewController removeFromParentViewController];调用'解雇之前'(我可以看到,它是从'rootViewController'的'childViewControllers'属性删除)...'但完成块仍然没有被调用。然后,点击导航堆栈的 –

+0

。 – CodaFi

发现了什么的问题是:我用的是第三方视图控制器已经覆盖- (void)dismissViewControllerAnimated:(BOOL)flag completion:(void (^)(void))completion,而不实际调用completion()

如果你提出一个模式,是收到消息视图控制器(或层次上,我还是没拿到)处理所有的过程添加孩子vc交换视图等等。看起来你在做两种技术的混合。只用一个。
因此,使用- (void)presentViewController:(UIViewController *)viewControllerToPresent animated:(BOOL)flag completion:(void (^)(void))completion来呈现它,使用dismissViewController让广告解散它,让视图控制器管理一切。