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];
答
发现了什么的问题是:我用的是第三方视图控制器已经覆盖- (void)dismissViewControllerAnimated:(BOOL)flag completion:(void (^)(void))completion
,而不实际调用completion()
答
如果你提出一个模式,是收到消息视图控制器(或层次上,我还是没拿到)处理所有的过程添加孩子vc交换视图等等。看起来你在做两种技术的混合。只用一个。
因此,使用- (void)presentViewController:(UIViewController *)viewControllerToPresent animated:(BOOL)flag completion:(void (^)(void))completion
来呈现它,使用dismissViewController让广告解散它,让视图控制器管理一切。
'addChildViewController:'实际上是推视图控制器到导航堆栈。你必须弹出它关闭该块之前,可以发射 – CodaFi
我试图做'[composeViewController removeFromParentViewController];调用'解雇之前'(我可以看到,它是从'rootViewController'的'childViewControllers'属性删除)...'但完成块仍然没有被调用。然后,点击导航堆栈的 –
。 – CodaFi