10

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

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

2 回答 2

1

找出问题所在:我使用的第 3 方视图控制器在- (void)dismissViewControllerAnimated:(BOOL)flag completion:(void (^)(void))completion没有实际调用的情况下被覆盖completion()

于 2013-06-26T12:33:11.840 回答
0

如果您呈现一个模态,是接收消息的视图控制器(或层次结构中的顶部,我仍然没有得到那个),它处理添加子 vc 交换视图等的所有过程。看来您正在做一个两种技术的混合。只用一个。
所以使用- (void)presentViewController:(UIViewController *)viewControllerToPresent animated:(BOOL)flag completion:(void (^)(void))completion广告显示它使用dismissViewController 让视图控制器管理一切。

于 2013-06-26T08:46:49.407 回答