2014-01-31 5 views
0

У меня есть приложение с кнопкой выхода на все мои страницы. Когда нажата кнопка выхода из системы, я хочу, чтобы мое приложение перешло на мой экран входа в систему. Я делаю это по телефону следующего в моем IBAction для кнопки выхода из системы:Правильный способ очистки просмотров после вызова текущегоViewController?

loginScreen = [[GP_MobilViewController alloc] initWithNibName:@"GP_MobilViewController" bundle:nil]; 
[currentView presentViewController:loginScreen animated:YES completion:nil]; 

Теперь моя проблема в том, что я не знаю, как удалить все предыдущие созданные экраны. Поскольку форма, которую я могу сказать, presentViewController ничего не удалит для меня, поэтому мне нужно сделать эту очистку самостоятельно?

PS. Я не использую UINavigationController. Поэтому popToRootViewControllerAnimated: ДА, не будет работать для меня. Мне нужно другое решение. Заранее спасибо.

+0

Я думаю, пришло время пожалеть о том, что вы не используете UINavigationController. Как вы сохраняете все свои предыдущие контроллеры представлений, если не в стеке контроллера навигации? –

+0

Я бы пересмотрел архитектуру вашего приложения ... 'presentViewController' показывает модальный диспетчер представлений. Модальным VC требуется родительский VC. Так что вы не можете просто поп ... – Martijn

+0

Я уже есть, но я не начинал этот проект, поэтому мне пришлось бы переписать чертовски много кода, чтобы использовать его. Я получил в общей сложности 40 viewControllers. Так что если я каким-то образом мог бы перебирать все созданные виды и удалять их. Но я не знаю, с чего начать. – user2408952

ответ

1
self.view.window.rootViewController = self; 

или в блоке завершения,

loginScreen = [[GP_MobilViewController alloc] initWithNibName:@"GP_MobilViewController" bundle:nil]; 
[currentView presentViewController:loginScreen animated:YES completion:^{ 
    [UIApplication sharedApplication].keyWindow.rootViewController =loginScreen; 
}]; 

или в loginViewControllers-viewDidAppear также вы можете установить его в качестве RootViewController к окну.
Это позволяет освободить все viewControllers.

+0

добавил code.thanks – santhu

+0

Спасибо, любой способ, которым я могу проверить, что он действительно работает? – user2408952

+0

да, вы можете. добавьте метод dealloc (напишите NSLog в нем) в другом контроллере, который необходимо освободить. когда вы представляете loginController, dealloc будет вызываться во всех других контроллерах view, кроме loginController. – santhu