NSNotification не отклоняет модальное представление

Задача: у меня есть контроллер навигации, который запускает модальный просмотр, называемый логином. В этом представлении входа есть кнопка, которая подталкивает другое модальное представление, называемое подпиской. Если пользователь регистрируется, модальное окно регистрации И модальное окно входа должно быть закрыто. Я создал 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]];

Я также пробовал это после вызова увольнения в методе регистрации

[self.parentViewController dismissModalViewControllerAnimated:YES];

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


person Trevor    schedule 07.07.2011    source источник
comment
у тебя есть решение?   -  person Ilanchezhian    schedule 07.07.2011


Ответы (2)


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

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

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

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

person Legolas    schedule 07.07.2011
comment
Это в основном решение. Мне пришлось переместить метод увольнения в самый корневой вид представленных модальных окон и добавить код [self.navigationController dismissModalViewControllerAnimated: YES]; - person Trevor; 08.07.2011

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

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

person deanWombourne    schedule 07.07.2011
comment
Ой. Я использую несколько запутанных словечек. Я использую presentModalViewController - person Trevor; 07.07.2011
comment
В таком случае полностью проигнорируйте мой ответ! Я могу только предположить, что из-за того, что у вас есть вложенные контроллеры модального представления, он запутывается, но ваш код должен работать. Я подумаю. . . - person deanWombourne; 07.07.2011