モーダルビューと以前のナビゲーションコントローラのビューを同時にポップしますか?

私はGoogleやスタックオーバーフローでこれに似た何かを発見していない…

私がしようとしているのは、モーダルビューと前のビューを同時にポップすることです。たとえば、カレンダーアプリを見てください。
編集‘画面で「イベントの削除」を選択すると、カレンダー表示に戻ります。
modalで提示された ‘編集‘画面と、イベント
‘画面(ユーザーがカレンダーイベントを表示しているところ)がポップされます。私が抱えている問題は、モーダルビューをポップする方法を知っているということですが、同じ
UIViewController サブクラス(この例では Edit
>モーダルではないビューをポップするにはどうすればよいですか?

通常のようにモーダルビューをポップアップし、 NSNotification を(
Event )画面の UIViewController
サブクラスにポストすることを考えていましたそのビューをポップするように指示します。

もう1つのことは、アニメーションの場合は、 popViewControllerAnimated
アニメーション(スライド左)ではなく、 dismissModalViewControlAnimated
アニメーション(スライドダウン)でなければなりません。

ありがとうございます。

また、こちらよりも優れたソリューションを探しています。これは私の(少なくとも
popViewControllerAnimated ではない)

ベストアンサー

modal
“parent”にモーダル・ビュー・コントローラー(アニメーション化された:NO)を破棄し、それ自体をスタックからポップする(アニメーション化:はい)ようにするには、デリゲート・パターンを使用する必要があります。

これはまさにカレンダーアプリで起こることです。イベントの削除を確認すると、ナビゲーションバーのタイトルに何が起こるか注意してください。そのビューがポップされているときに、タイトルが「編集」から「イベントの詳細」に素早く変わるのを見ることができますナビゲーションスタックから外に出てください。

したがって、簡単に言えば、あなたのモーダルビューコントローラでカレンダーアプリについて話していたら、
didConfirmEventDeletion
のようなメソッドを使ってプロトコルを作成してください:

@protocol ModalViewDelegate 
- (void)didConfirmEventDeletion;
@end

@interface ModalViewController...

@property (nonatomic, assign) id delegate;

@end     

そして実装:

@implementation ModalViewController

- (void)deleteEventMethod
{
    ...
    if ([self.delegate respondsToSelector:@selector(didConfirmEventDeletion)])
         [self.delegate didConfirmEventDeletion];
}

親ビューコントローラで、それ自体をモーダルの代理人として宣言し、
didConfirmEventDeletion を実装します。

- (void)didConfirmEventDeletion
{
    [self dismissModalViewControllerAnimated:NO];
    [self.navigationController popViewControllerAnimated:YES];
}

PS:メモリからこのコードを書きましたが、いくつかのタイプミスがあるかもしれません…

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です