0

と呼ばれる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を返すので、実際に問題はスレッドではありません。

別のビューコントローラ私はnavigationControllerself.presentedViewControllerself.presentingViewControllerでそれを呼び出して試してみました

に却下呼び出す遅延

[self performSelector:@selector(dismissModalView) withObject:nil afterDelay:0.1]; 

でそれを呼び出します。

完了ブロックは、私が直接[self dismissViewControllerAnimated:YES completion:nil]と呼ばれて呼ばれたボタンアクションで

NewsViewControllerから直接解任呼び出します。

Btw。ちょうど楽しみのために、私はpresentViewControllerメソッドの完了ブロックからdismissメソッドを呼び出すことを試みました、そして、それは解消されました。

答えて

0

私は最終的に問題を見つけた、それはかなり予想外でした。問題は、NewsViewControllerが私のログインビューコントローラに表示されていることです。このコントローラーは、ユーザーがTouch IDを使用してログインすることを許可し、そのユーザーがviewDidAppearメソッドでTouch IDプロンプトを要求します。どうやら、これは提示されたビューの解雇を混乱させ、一見iOS 9でしかない(まあ、たぶん、それだけではないが、iOS 10でうまくいくようだ)。

0

コードの下で試してみてください。

newsViewController.completionBlock = ^{ 
    [self performSelector:@selector(Dismiss) withObject:nil afterDelay:0.3]; 
}; 

-(void)Dismiss 
{ 
[self dismissViewControllerAnimated:YES completion:^{ 

    }]; 
} 
+0

私はこれで何を達成するのか分かりません。あなたのコードを使用して、私は 'NewsViewController'を提示した後、再びそれを提示します。これは私が全部欲しいものではなく、とにかく私の問題を解決することはできません(最初は却下することはできません)。 – pajevic

+0

完了時にそれを却下し、完了ブロックで何もせずに却下するだけです。 –

+0

あなたのコードは私に無限のサイクルを与えます。完了ブロックでは、同じView Controllerを再度表示しています。ビューが終了すると、再び表示されます。 – pajevic

関連する問題