5

我試圖解僱這樣一個視圖控制器: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

回答

1

發現了什麼的問題是:我用的是第三方視圖控制器已經覆蓋- (void)dismissViewControllerAnimated:(BOOL)flag completion:(void (^)(void))completion,而不實際調用completion()

0

如果你提出一個模式,是收到消息視圖控制器(或層次上,我還是沒拿到)處理所有的過程添加孩子vc交換視圖等等。看起來你在做兩種技術的混合。只用一個。
因此,使用- (void)presentViewController:(UIViewController *)viewControllerToPresent animated:(BOOL)flag completion:(void (^)(void))completion來呈現它,使用dismissViewController讓廣告解散它,讓視圖控制器管理一切。

相關問題