不调用dismissViewControllerAnimated完成块

时间:2013-06-26 08:35:22

标签: ios objective-c cocoa-touch uiviewcontroller objective-c-blocks

我正试图解雇这样的视图控制器:

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

2 个答案:

答案 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将其解除,让视图控制器管理所有内容。