UIModalPresentationPageSheet プレゼンテーション スタイルでビュー コントローラーをプッシュする UINavigationController があります。
このページ シートのビュー コントローラー内から、UIModalPresentationFormSheet スタイルのビュー コントローラーを提示します。
ユーザーがフォーム シートの [完了] ボタンを押したら、フォーム シートとページ シートを閉じたいと思います。
[完了] ボタンのアクション:
-(IBAction)onDone:(id)sender
{
if(self->delegate && [self->delegate respondsToSelector:self->actionSelector])
{
[self->delegate performSelector:self->actionSelector withObject:[NSString stringWithString:self.textView.text]];
}
[self dismissViewControllerAnimated:YES completion:nil];
}
デリゲートはページ シートのビュー コントローラーであり、セレクターでページ シートを閉じます。
[self dismissViewControllerAnimated:YES completion:nil];
実行すると、次のようになります。
Warning: Attempt to dismiss from view controller <UINavigationController: 0xa9381d0> while a presentation or dismiss is in progress!
フォームビューが閉じられる前にセレクターが呼び出されるため、これが発生する理由はわかりますが、これを回避する最善の方法はわかりません。
onDone で却下を削除しようとしましたが、セレクター呼び出しで両方の却下を呼び出し (フォーム シートのanimated:NO を使用)、機能しているように見えますが、これが私がアプローチすべき方法であるかどうかはわかりませんそれを修正します。