Переключение видов контента Проблема - PullRequest
1 голос
/ 25 октября 2010

Я пытаюсь переключить представления с помощью приложения iPhone - у меня есть родительский контроллер представления, SuperviewController, а затем два представления, которые я хочу переключить в этом родительском представлении, MainMenuController и MainGameController.

* РЕДАКТИРОВАТЬ *: я сейчас использую навигационные контроллеры:

SuperviewController.m

viewDidLoad
self.mainMenuController = [[MainMenuController alloc] initWithNibName:@"MainMenu" bundle:nil];
[[self navigationController] pushViewController:self.mainMenuController animated:NO];
switchToMainGame
self.mainGameController = [[MainGameController alloc] initWithNibName:@"MainGame" bundle:nil];
[[self navigationController] pushViewController:self.mainGameController animated:NO];

Приложение корректно загружается с mainMenu.xib. Однако при вызове switchToMainGame ничего не происходит - все равно, что XCode забыл, что такое mainGameController.

Спасибо за любую помощь.

1 Ответ

1 голос
/ 26 октября 2010

Возможно, вы захотите поменять контроллеры представлений , а не , используя UINavigationController.

В вашем AppDelegate.h

@interface AppDelegate : NSObject <UIApplicationDelegate> 
{
    UIWindow *window;
    UINavigationController *navigationController;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UINavigationController *navigationController;

@end

И в - [AppDelegate applicationDidFinishLaunching:] создать экземплярnavigationController, таким образом:

[self setNavigationController:[[UINavigationController alloc] initWithRootViewController:mySuperviewController]];

[[self navigationController] setNavigationBarHidden:YES];   

//  Configure and show the window
[window addSubview:[navigationController view]];
[window makeKeyAndVisible];

Затем в SuperviewController.m вы можете создать экземпляры MainMenuController и MainGameController, как вы уже это делаете.Чтобы начать с MainMenuController, вы можете сделать это в SuperviewController -viewDidLoad

[[self navigationController] pushViewController:[self mainMenuController] animated:YES];

. Вам нужно было бы добавить несколько смартов для непосредственного переключения между mainMenuController и mainGameController - но это не составило бы трудностей.

Чтобы не перезагружать кончики снова и снова, рассмотрите определение методов доступа следующим образом:

- (MainGameController*) mainGameController
{
if (mainGameController == nil)
    {
    mainGameController = [[MainGameController alloc] initWithNibName:@"MainGame" bundle:nil];
    }
return mainGameController;
}

Также имейте в виду, что переключение между контроллерами родственного представления включает в себя выталкивающий контроллер текущего представления (например, mainMenuController) до нажатия на другой контроллер представления (например, mainGameController).

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