У меня есть такая иерархия представлений:
- Пользовательский контроллер представления (скажем, контроллер представления 1), показанный делегатом приложения.
- Другой контроллер представления (скажем, контроллер представления 2), показанный модально из контроллера представления 1.
- Другой контроллер представления (скажем, контроллер представления 3), показанный модально из контроллера представления 2.
- Есть еще один контроллер представления (скажем, контроллер представления 4), из которого мне нужно выполнить шаги 2 и 3.
Теперь для некоторых действий мне нужно отменить всю иерархию модальных представлений. Итак, что я делаю, так это отправляю уведомление об этом событии с контроллера представления 3 и прослушиваю это уведомление в контроллере представления, а затем выполняю:
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"cancelViews" object:nil];
Это работает, но есть одна проблема. В соответствии с моим потоком приложений я в конечном итоге регистрируюсь для этого уведомления как на контроллере представления 1, так и на контроллере представления 4. Теперь, когда вся модальная иерархия для контроллера представления 1 была поднята, и уведомление было зарегистрировано VC1, а затем поверх этой другой иерархии представления для контроллера представления 4 отображается и, наконец, когда выдается уведомление, исчезает и моя иерархия представлений.
Я хочу, чтобы исчезла только моя самая верхняя иерархия представлений. Любое решение для этого действительно поможет.