Я использовал этот метод в нескольких приложениях, которые продаются в магазине приложений, но по какой-то причине текущее приложение, над которым я работаю, сводит меня с ума ... Должно быть, я что-то упускаю.
Основной вид приложения. Контроллер .h файл:
#import "MainMenuController.h"
#import "GamePlay.h"
@interface ProjectNameiPhoneViewController : UIViewController <MenuDelegate, GameDelegate> {
UIViewController *currentPageController;
}
Приложение запускается и загружает контроллер MainMenu view:
UIViewController *nextController = [[MainMenuController alloc] initWithNibName:@"MainMenuController" bundle:nil];
[nextController performSelector:@selector(setDelegate:) withObject:self];
[self.view addSubview:nextController.view];
currentPageController = nextController;
[currentPageController retain];
[nextController release];
Из MainMenuController.m пользователь выбирает запуск игры:
[delegate startGameplay:self];
Назад в главном окне приложения. Контроллер:
- (void)startGameplay:(MainMenuController *)sender {
UIViewController *nextController = [[GamePlay alloc] initWithNibName:@"GamePlay" bundle:nil];
[nextController performSelector:@selector(setDelegate:) withObject:self];
[currentPageController.view removeFromSuperview];
[self.view addSubview:nextController.view];
[currentPageController release];
currentPageController = nextController;
[currentPageController retain];
[nextController release];
}
На экране игрового процесса пользователь нажимает кнопку «Назад», чтобы вернуться в главное меню:
- (IBAction)backTapped {
[delegate backToMenu:self];
}
Вернуться в главное окно приложения. Контроллер:
- (void)backToMenu:(GamePlay *)sender {
UIViewController *nextController = [[MainMenuController alloc] initWithNibName:@"MainMenuController" bundle:nil];
[nextController performSelector:@selector(setDelegate:) withObject:self];
[currentPageController.view removeFromSuperview];
[self.view addSubview:nextController.view];
[currentPageController release];
currentPageController = nextController;
[currentPageController retain];
[nextController release];
}
Я снова выбираю запуск игры из главного меню.
Класс GamePlay / Nib загружается, и я снова нажимаю кнопку «Назад», чтобы вернуться в главное меню.
В этот момент приложение вылетает, информация не выводится на консоль.
Любые идеи будут с благодарностью приняты - я прокомментировал почти все остальное в своем коде до такой степени, что это переключение между viewControllers является практически единственным выполняемым кодом, и я не знаю, почему он падает. ..
Большое спасибо заранее за вашу помощь!