iPhone - Выпустить viewcontroller после всплывающей операции - PullRequest
1 голос
/ 18 марта 2011

Когда я закрываю (выталкиваю) viewcontroller, как мне выпустить его, чтобы при следующем запуске он снова запустился? И как мне снова его инициализировать?

Допустим, у меня есть некоторый слой игры cocos2d, размещенный на этом контроллере представления. Я хотел бы добавить кнопку, чтобы закрыть ее (открыть представление) и не запускать в фоновом режиме, как сейчас.

Я просто использую приведенный ниже код, чтобы вытолкнуть текущее представление, но оно не «убивает» его, а просто заставляет его исчезнуть и перейти в root.

- (IBAction) closeThisOne {
    [self.navigationController popViewControllerAnimated:YES];
}

Я создаю вид таким образом:

- (IBAction) buttonPressed {
if (self.mViewController == nil) {
    MainViewController *vc = [[MainViewController alloc]
                                      initWithNibName:@"MainView" bundle:[NSBundle mainBundle]];
    self.mViewController = vc;
    [vc release];
}
[self.navigationController pushViewController:self.mViewController animated:YES];
}

Просто .. как я могу сделать что-то вроде: просмотр в режиме root> запуск просмотра игры> возврат в режим просмотра root (и выпуск игры)> возобновление просмотра игры

Я все еще немного запутался, как именно работает навигация и cocos2d .. Заранее спасибо!

РЕДАКТИРОВАТЬ: ОК! Я вижу это сейчас ... То, как я нажимал на контроллер, я сохранял его в то же время. Только сейчас я увидел сравнение с твоими постами, спасибо.

Ответы [ 4 ]

4 голосов
/ 18 марта 2011

После вызова [self.navigationController pushViewController:vc animated:YES]; его счетчик будет увеличен, так как он будет добавлен в стек. Поэтому после этой строки кода вам нужно позвонить [vc release];. И когда вы вызываете [self.navigationController popViewControllerAnimated:YES];, он будет удален из стека, и его счетчик хранения снова уменьшится на единицу.

4 голосов
/ 18 марта 2011

освободить контроллер представления после того, как вы поместили его в стек UINavigationController.UINavigationController сохранит его.

 DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:@"Nib" bundle:nil];
 // ...
 [self.navigationController pushViewController:detailViewController animated:YES];
 [detailViewController release];
1 голос
/ 18 марта 2011

Когда вы одновременно нажимаете объект nextClass, просто отпустите этот объект класса, и это освободит объект этого viewController, а navigationController сохранит этот объект.

DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:@"Nib" bundle:nil]; // ... [self.navigationController pushViewController:detailViewController animated:YES]; [detailViewController release];

и когда вы в этот момент откроете этот объект просмотра, контроллер навигации автоматически освободит этот сохраненный объект.

0 голосов
/ 18 марта 2011

Насколько я знаю, [self.navigationController popViewControllerAnimated:YES]; выпустит текущий viewcontroller, который присутствует в стеке навигации.Затем вы должны снова выделить контроллер представления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...