2013-11-27 5 views
0

Люди, я хочу, чтобы pop viewController с помощью обычной кнопки назад на контроллере NavigationView, не выпустил настроенное представление, созданное пользователем, кто-нибудь знает, как это сделать? Поскольку естественный поток навигационного контроллера освобождает «poped» viewController! Спасибо за помощь!pop a viewController without release

+0

Почему вы не храните сильную ссылку на контроллер вида, который вытолкнут, так что когда его выскочил, у вас все еще есть контроллер вида и его состояние представления в памяти. – San

+0

Поддерживайте сильную ссылку на представление, и оно должно оставаться в памяти. – madmik3

+0

@madmik, это плохая идея сохранить сильную ссылку на представление, но не на просмотр CONTROLLER. В представлении контроллера контроллера у меня есть ссылки IBAction, которые указывают на контроллер представления и вызывают сбои, если вы активируете действие. Сан прав, предлагая сохранить сильную ссылку на представление CONTROLLER. –

ответ

2

Вам необходимо сохранить копию контроллера вида в другом месте. Возможно, внутри класса, содержащего навигационный контроллер. Затем, при необходимости, вставьте его обратно в стек.

Дополнительно проверить UINavigationControllerDelegate

0

Вы можете сохранить данные в «всплывшем» контроллере вида? Когда он снова выйдет, заселите его? Когда контроллер просмотра выскочил, его следует отпустить.

0

Вы можете navigation.viewControllers массив копия в глобальный массив перед попом настраиваемого представления. После всплывающего обзора global navigation.viewControllers назначают глобальный массив.

NSArray создать в AppDelegate

appDelegate.nav = self.navigationController.viewControllers; 
[self.navigationController popViewControllerAnimated:YES]; 

затем после назначения глобального массива в poped зрения

-(void)viewWillAppear:(BOOL)animated 
{ 
    self.navigationController.viewControllers = appDelegate.nav; 
} 
0

Ну люди тха Ответ, сделать ваш контроллер от раскадровки и не использовать SEGUE для вызов.

if(comparacao == nil) 
{ 
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main_iPhone" bundle: nil]; 
    comparacao = [storyboard instantiateViewControllerWithIdentifier:@"ComparacaoView"]; 
} 
[self.navigationController pushViewController:comparacao animated:YES]; 

Так с этим, я каждый использовать до того, например созданы, и каждая вещь, что мой пользователь может делать с этой точки зрения была сохранена.

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