と呼ばれるUIViewController
サブクラスがボタンアクションから呼び出されます。コントローラは次のように設定し、別のビューコントローラに提示されている:dismissViewControllerAnimatedがiOS 9で動作していない
newsViewController.completionBlock = ^{
[self dismissViewControllerAnimated:YES completion:nil];
};
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:newsViewController];
[self presentViewController:navigationController animated:YES completion:nil];
iOSの10で、このすべては、しかし、iOSの9にビューが却下されていない、正常に動作します。そこにブレークポイントを置くとヒットします。
私は成功せず、次の試してみました。(同期と非同期の両方)メインスレッドからそれを呼び出さ
私はそれがこのようGCDを使って試してみました
:
dispatch_async(dispatch_get_main_queue(), ^{
[self dismissViewControllerAnimated:YES completion:nil];
});
私はまた、解雇の呼びかけを方法に入れてから呼び出すことによって試してみた。
[self performSelectorOnMainThread:@selector(dismissModalView) withObject:nil waitUntilDone:NO];
完了ブロック内から[NSThread isMainThread]
への呼び出しがYESを返すので、実際に問題はスレッドではありません。
別のビューコントローラ私はnavigationController
、self.presentedViewController
とself.presentingViewController
でそれを呼び出して試してみました
に却下呼び出す遅延
[self performSelector:@selector(dismissModalView) withObject:nil afterDelay:0.1];
でそれを呼び出します。
完了ブロックは、私が直接[self dismissViewControllerAnimated:YES completion:nil]
と呼ばれて呼ばれたボタンアクションで
NewsViewControllerから直接解任呼び出します。
Btw。ちょうど楽しみのために、私はpresentViewController
メソッドの完了ブロックからdismissメソッドを呼び出すことを試みました、そして、それは解消されました。
私はこれで何を達成するのか分かりません。あなたのコードを使用して、私は 'NewsViewController'を提示した後、再びそれを提示します。これは私が全部欲しいものではなく、とにかく私の問題を解決することはできません(最初は却下することはできません)。 – pajevic
完了時にそれを却下し、完了ブロックで何もせずに却下するだけです。 –
あなたのコードは私に無限のサイクルを与えます。完了ブロックでは、同じView Controllerを再度表示しています。ビューが終了すると、再び表示されます。 – pajevic