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を呼び出すことなく- (void)dismissViewControllerAnimated:(BOOL)flag completion:(void (^)(void))completionをオーバーライドしていました。そのブロックが起動する前にそれをポップする必要があります – CodaFi

+0

'' dismiss ... 'を呼び出す前に '[composeViewController removeFromParentViewController];'( 'rootViewController'の' childViewControllers'プロパティから削除されているのがわかりますが)ブロックはまだ呼び出されません。 –

+0

poナビゲーションスタック。 – CodaFi

答えて

1

: `実際にナビゲーションスタックにそのビューコントローラをプッシュ:私が使っていたサードパーティのビューコントローラは、実際にcompletion()

0

(または階層のトップを、私はまだそれを取得していない)すべてのプロセスを処理しています子VCを追加するあなたは2つのテクニックの組み合わせをしているようです。ちょうど1つ使ってください。
したがって、- (void)presentViewController:(UIViewController *)viewControllerToPresent animated:(BOOL)flag completion:(void (^)(void))completionを使用して提示します。dismissViewControllerを使用してそれを却下すると、View Controllerはすべてを管理します。問題が何であったかが分かった

関連する問題