1

タスク: ログインと呼ばれるモーダルビューをプッシュするナビゲーションコントローラーがあります。このログインビューには、サインアップと呼ばれる別のモーダルビューを押すボタンがあります。ユーザーがサインアップモーダルにサインアップし、ログインモーダルが閉じられる必要がある場合。サインアップ送信アクションからの投稿を待機する通知をログインビュー内に作成しました。

問題ログインは通知を受け取りますが、ログインビューを閉じません。NSLogが起動するため、メソッドが実行されることを知っています。

ログインviewDidLoad

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(dismiss) name@"SignedUp" object nil];

ログイン却下

NSLog(@"Dismiss"); // this fires
[self dismissModalViewControllerAnimated: YES];

サインアップ方法(子コントローラー)

[self dismissModalViewControllerAnimated: YES];
[[NSNotificationCenter defaultCenter] postNotificationName:@"SignedUp" object:[self parentViewController]];

サインアップメソッドでdismissを呼び出した後もこれを試しました

[self.parentViewController dismissModalViewControllerAnimated:YES];

編集私はこれらのコントローラーをプッシュしていません。使ってますpresentModalViewController

4

2 に答える 2

1

スタック全体を却下する場合、なぜ一度に1つずつ却下するのですか?これは通知では問題にならない可能性があります。を使用してスタック全体をポップできます

[[[self parentViewController] parentViewController] dismissModalViewControllerAnimated:YES];

そして、もう一度見せたい場合は、presentModalViewControllerもう一度作ってください。

https://stackoverflow.com/search?q=Dismiss+multiple+modal+controllersから多くの入力を得ることができると確信しています

于 2011-07-07T15:41:04.887 に答える
0

モーダルビューをどのように提示しますか?私が尋ねる理由は、あなたが「モーダルビューをプッシュするナビゲーションコントローラー」と言うからです。

を使用している場合pushViewController:animated:、それはモーダルビューではないため、使用popViewControllerAnimated:して再び消えるようにする必要があります。

于 2011-07-07T15:26:53.043 に答える