切换内容视图问题

时间:2010-10-25 19:56:52

标签: iphone

我正在尝试使用iPhone应用程序切换视图 - 我有一个父视图控制器SuperviewController,然后我想在该父视图中切换两个视图MainMenuController和{{ 1}}。

* 编辑 * :我现在正在使用导航控制器:

SuperviewController.m

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

应用程序正确加载mainMenu.xib。但是,当调用 switchToMainGame 时,没有任何反应 - 就好像XCode忘记了mainGameController是什么。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您可以考虑使用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之间切换 - 但这并不困难。

为了不再一次重新加载nib,请考虑定义这样的访问器方法:

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

另外,请记住,在推送其他视图控制器(例如,mainGameController)之前,在兄弟视图控制器之间切换涉及弹出当前视图控制器(例如,mainMenuController)