簡體   English   中英

在UINavigationController上未調用viewDidDisappear

[英]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:被調用。

不僅如此,視圖控制器也不會接收任何其他委托消息:沒有viewDidUnloaddealloc ...

有什么我可以做的嗎?

我很沮喪! 有什么想法嗎?

謝謝!

如果您在問題中輸入的代碼與輸入錯誤相同,我就知道答案了:方法簽名是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM