我正试图解雇这样的视图控制器:
[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 :(得分:2)
发现问题所在:我使用的第三方视图控制器覆盖了- (void)dismissViewControllerAnimated:(BOOL)flag completion:(void (^)(void))completion
而没有实际调用completion()
答案 1 :(得分:0)
如果你提出一个模态,那么接收消息的视图控制器(或层次结构的顶层,我仍然没有得到它)处理添加子v.c的所有过程。交换视图等似乎你正在混合使用这两种技术。只需使用一个。
因此,使用- (void)presentViewController:(UIViewController *)viewControllerToPresent animated:(BOOL)flag completion:(void (^)(void))completion
广告使用dismissViewController将其解除,让视图控制器管理所有内容。