代码之家  ›  专栏  ›  技术社区  ›  element119

切换内容视图问题

  •  1
  • element119  · 技术社区  · 15 年前

    SuperviewController ,然后在父视图中切换两个视图, MainMenuController MainGameController .

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

    监视控制器.m


    self.mainMenuController = [[MainMenuController alloc] initWithNibName:@"MainMenu" bundle:nil];
    [[self navigationController] pushViewController:self.mainMenuController animated:NO];
    切换到名称
    self.mainGameController = [[MainGameController alloc] initWithNibName:@"MainGame" bundle:nil];
    [[self navigationController] pushViewController:self.mainGameController animated:NO];

    应用程序通过main menu.xib正确加载。不过,打电话时 切换到名称 ,什么也没发生-好像XCode忘记了主游戏控制器是什么。

    1 回复  |  直到 15 年前
        1
  •  1
  •   westsider    15 年前

    您可以考虑交换视图控制器

    在你的AppDelegate.h中

    @interface AppDelegate : NSObject <UIApplicationDelegate> 
    {
        UIWindow *window;
        UINavigationController *navigationController;
    }
    
    @property (nonatomic, retain) IBOutlet UIWindow *window;
    @property (nonatomic, retain) IBOutlet UINavigationController *navigationController;
    
    @end
    

    并在-[AppDelegate applicationIDFinishLaunching:]中实例化navigationController,因此:

    [self setNavigationController:[[UINavigationController alloc] initWithRootViewController:mySuperviewController]];
    
    [[self navigationController] setNavigationBarHidden:YES];   
    
    //  Configure and show the window
    [window addSubview:[navigationController view]];
    [window makeKeyAndVisible];
    

    然后在SuperviewController.m中,您可以实例化MainMenuControl和MainGameController,就像您已经做的那样。要从主菜单控件开始,可以在SuperviewController-viewDidLoad中执行此操作

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

    您需要添加一些智能来直接在MainMenuControl和mainGameController之间切换,但这并不困难。

    为了避免一次又一次地重新加载nib,可以考虑定义如下访问器方法:

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

    另外,请记住,在兄弟视图控制器之间切换涉及到弹出当前视图控制器(例如,mainMenuController) 按下其他视图控制器(如主游戏控制器)。