NSNotification не отклонит модальное представление - PullRequest
0 голосов
/ 07 июля 2011

Задача: У меня есть контроллер навигации, который выдвигает модальное представление, называемое входом в систему.Это представление входа в систему имеет кнопку, которая выдвигает другое модальное представление, называемое регистрацией.Если пользователь подписывается на модал регистрации И модал входа в систему должен быть отклонен.Я создал уведомление nsnotification в представлении входа в систему, которое ожидает сообщения от действия отправки регистрации.

Проблема Имя входа получает уведомление, но не закрывает представление входа в систему.Я знаю, что метод запускается, потому что запускается 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];

Edit Я не выдвигаю эти контроллеры.Я использую presentModalViewController

Ответы [ 2 ]

1 голос
/ 07 июля 2011

Почему вы отказываетесь от них по одному, если вы собираетесь удалить весь стек?Это не может быть проблемой с уведомлениями.Вы можете просто вытолкнуть весь стек, используя

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

И затем, если вы хотите показать его снова, просто сделайте его снова presentModalViewController.

Я уверен, что вы можете получить много информации через https://stackoverflow.com/search?q=Dismiss+multiple+modal+controllers

0 голосов
/ 07 июля 2011

Как вы представляете свой модальный вид? Причина, по которой я спрашиваю, заключается в том, что вы говорите «контроллер навигации, который выдвигает модальное представление».

Если вы используете pushViewController:animated:, то это не модальное представление, и вам нужно использовать popViewControllerAnimated:, чтобы оно снова исчезло.

...