viewDidDisappear没有在UINavigationController上调用

时间:2010-11-15 16:11:27

标签: objective-c ipad ios uiviewcontroller uinavigationcontroller

我的导航控制器出了问题。如果我将视图控制器添加到堆栈:

- (void) tui_ToggleListStudy:(id)sender
{
    listVC = [[ListViewController alloc] init];
    [self.navigationController pushViewController:listVC animated:NO];
    [listVC release];
}

对于viewWillDisappear:viewDidDisappear下面的视图控制器,我有NSLog消息 - 但只有viewWillDisappear:被调用。

不仅如此,视图控制器也不会收到任何其他委托消息:否viewDidUnloaddealloc ...

我能做些什么吗?

我很难过!有什么想法吗?

谢谢!

4 个答案:

答案 0 :(得分:3)

如果你在你的问题代码中犯了相同的拼写错误,我知道答案:方法签名是viewDidDisappear:(带有animated参数),而不是viewDidDisappear

  

不仅如此,视图控制器也不会收到任何其他委托消息:没有viewDidUnload或dealloc ......

将另一个控制器压入堆栈时,不会取消分配视图控制器。除非内存不足,否则不会调用viewDidUnload

答案 1 :(得分:2)

假设您的导航控制器包含在某种顶视图控制器中,您还必须将相关消息从该顶视图控制器转发到导航控制器:

-(void)viewWillAppear:(BOOL)animated
{
    [navController viewWillAppear:animated];
}

-(void)viewDidAppear:(BOOL)animated
{
    [navController viewDidAppear:animated];
}

-(void)viewWillDisappear:(BOOL)animated
{
    [navController viewWillDisappear:animated];
}

-(void)viewDidDisappear:(BOOL)animated
{
    [navController viewDidDisappear:animated];
}

答案 2 :(得分:1)

您必须在执行viewWillDisappear时调用super。

答案 3 :(得分:0)

UIViewController的指定初始值设定项为-initWithNibName:bundle:。你确定你的视图控制器正在找到它的笔尖并找到它的连接视图吗?我敢打赌,如果在初始化ListViewController之后设置断点,你会发现它的-view返回nil。