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

XCode:insertSubview,removeFromSuperview,viewDidLoad…把它们放在一起

  •  0
  • tambler  · 技术社区  · 15 年前

    我觉得我缺少了一些基本的东西,如果你能帮我把这些都整理好,我会很感激的。

    假设我有两个视图控制器。。。ViewA控制器和ViewB控制器。

    如果我想展示viewA,我会这样做:

    ViewAController *new_view = [[ViewAController alloc] initWithNibName:@"ViewAController" bundle:nil];
    self.viewAController = new_view;
    [self.view insertSubView:new_view.view atIndex:0];
    [new_view release];
    

    如果在显示viewA之后,我想显示viewB控制器,我会这样做:

    [self.viewAController.view removeFromSuperview];
        ViewBController *new_view = [[ViewBController alloc] initWithNibName:@"ViewBController" bundle:nil];
        self.viewBController = new_view;
        [self.view insertSubView:new_view.view atIndex:0];
    [new_view release];
    

    这是我的问题。。。

    [self.viewBController.view removeFromSuperview];
    if ( self.viewAController == nil ) {
    
      ViewAController *new_view = [[ViewAController alloc] initWithNibName:@"ViewAController" bundle:nil];
      self.viewAController = new_view;
      [self.view insertSubview:new_view.view atIndex:0];
      [new_view release];
    
     } else {
    
      [self.view insertSubview:self.viewAController.view atIndex:0];
    
     }
    

    viewA的“viewDidLoad”函数不启动。就好像viewA已经从视图中删除了,但是它的状态保存在内存中。当我再次加载viewA时,它只是从停止的地方恢复过来。我真正需要它做的是像第一次加载一样加载,使用“viewDidLoad”等。。。

    我希望我已经解释清楚了。如果有人能给我一些启示,我将不胜感激。

    1 回复  |  直到 12 年前
        1
  •  2
  •   Eiko    15 年前

    如果你不设定 self.viewAController self.viewA控制器 财产。

    如果调试If/else代码,您可能会看到从未访问过“If”块。