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