2013-02-28 2 views
2

У меня есть приложение с navigationController и некоторый root viewController в его стеке. Мне нужен способ сбросить состояние приложения по умолчанию, т. Е. Когда в моем приложении только навигационный контроллер и его rootController. Например, я делаю запрос на базовые данные для создания бэкэнд и получения ответа, в котором говорится, что я должен немедленно выйти из системы. В этот момент, допустим, пользователь открыл много других контрольных элементов viewController в стеке navigationController и, возможно, некоторые представленные viewControllers со своими навигационными контроллерами. Поэтому мне нужен способ вернуть пользователя из любого места в корневой viewController приложения.«Сбросить» приложение в состояние по умолчанию

Я знаю, что это плохой пользовательский опыт, но это определенно лучше, чем сбой приложения, и в любом случае это должно быть редкой ситуацией.

Я не думаю, что создание цепной реакции между всеми viewControllers, которые будут поодиночке увольнять их, пока не достигнет моего корневого представления. Контроллер - хорошая идея для меня. Это слишком много идентичного кода в каждом VC, и я не хочу создавать подкласс UIViewController и подклассы всех моих VC от него, чтобы это сделать.

Любые предложения?

+0

Я закончил с использованием цепной реакции между всеми диспетчерами viewControllers и всех моих VC-подклассов из пользовательского sublclass UIViewController с реализованной там логикой по умолчанию. Думаю, не было никакого способа избежать этого. – DemoniacDeath

ответ

0

Вы можете использовать [self.navigationController popToRootViewControllerAnimated:YES];, чтобы перейти к основному контроллеру rootview с любого вида приложения.

+0

Да, но будет ли это работать, если у меня будет несколько представленных viewControllers? – DemoniacDeath

+0

Если вы добавляете виды в свой основной вид, перейдите по этой ссылке, http://stackoverflow.com/questions/2156015/iphone-remove-all-subviews –

+0

Нет, я не добавляю просмотров в свой основной вид. Я говорю о иерархии viewControllers. Предположим, у меня есть 3 диспетчера viewControllers в моем стеке навигации, а последний из них представляет собой еще один модальный контроллер навигации с собственным стеком viewControllers. Поэтому, когда я использую popToRootViewControllerAnimated: ДА, скажем, мой rootViewController, будет ли он работать корректно, пока у меня все еще есть мой представленный контроллер представления? – DemoniacDeath

Смежные вопросы