我的导航控制器出了问题。如果我将视图控制器添加到堆栈:
- (void) tui_ToggleListStudy:(id)sender
{
listVC = [[ListViewController alloc] init];
[self.navigationController pushViewController:listVC animated:NO];
[listVC release];
}
对于viewWillDisappear:
和viewDidDisappear
下面的视图控制器,我有NSLog消息 - 但只有viewWillDisappear:
被调用。
不仅如此,视图控制器也不会收到任何其他委托消息:否viewDidUnload
或dealloc
...
我能做些什么吗?
我很难过!有什么想法吗?
谢谢!
答案 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。