[英]viewDidDisappear not getting called on a UINavigationController
我的導航控制器有問題。 如果我將視圖控制器添加到堆棧中:
- (void) tui_ToggleListStudy:(id)sender
{
listVC = [[ListViewController alloc] init];
[self.navigationController pushViewController:listVC animated:NO];
[listVC release];
}
我下面的view controller有NSLog消息,分別用於viewWillDisappear:
和viewDidDisappear
但只有viewWillDisappear:
被調用。
不僅如此,視圖控制器也不會接收任何其他委托消息:沒有viewDidUnload
或dealloc
...
有什么我可以做的嗎?
我很沮喪! 有什么想法嗎?
謝謝!
如果您在問題中輸入的代碼與輸入錯誤相同,我就知道答案了:方法簽名是viewDidDisappear:
帶有animated
參數),而不是viewDidDisappear
。
不僅如此,視圖控制器也不會收到任何其他委托消息:沒有viewDidUnload或dealloc ...
當您將另一個控制器推入堆棧時,不會釋放視圖控制器。 除非內存不足,否則不會調用viewDidUnload
。
假設導航控制器包含在某種頂視圖控制器中,那么您還必須將相關消息從該頂視圖控制器轉發到導航控制器:
-(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];
}
您必須在實現viewWillDisappear時調用super。
UIViewController的指定初始值設定項是-initWithNibName:bundle:
您確定視圖控制器正在找到其筆尖並找到其已連接的視圖嗎? 我敢打賭,如果在初始化ListViewController之后設置斷點,您會發現其-view返回nil。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.