簡體   English   中英

每次調用popViewControllerAnimated后都會調用viewDidLoad:

[英]viewDidLoad getting called every time after calling popViewControllerAnimated:

我有一個名為ViewControllerOne的vc,當用戶點擊UITableViewCell我調用了一個push segue並導航到ViewControllerTwo ViewControllerTwo我隱藏了導航欄,因此創建了一個自定義的后退按鈕:

- (IBAction)backBttn:(id)sender {

    [self.navigationController popViewControllerAnimated:YES];

}

可以正常工作,但是每次導航回到ViewControllerOne並再次打開ViewControllerTwo時,都會在ViewControllerTwo調用viewDidLoad 我正確調用viewDidLoad是因為我正在使用[self.navigationController popViewControllerAnimated:YES]嗎? 還是必須有另一個原因?

如果我理解正確,那么您會看到正在推送到的視圖控制器上調用了viewDidLoad。 ViewControllerTwo )。 如果從ViewControllerOne推送到ViewControllerTwo ,則會調用ViewControllerTwo的viewDidLoad。

如果然后單擊后退按鈕以彈出ViewControllerTwo ,返回到ViewControllerOne ,然后再次推到ViewControllerTwo ,則會看到第二次調用viewDidLoad

這是預期的行為。 推式Segue(以及展開式Segue以外的所有其他Segue)將創建它們所呈現的視圖控制器的新實例。

同樣,彈出/關閉會取消分配您要離開的視圖控制器。

從導航堆棧中彈出視圖控制器時,它所管理的視圖將被釋放(或卸載)。 因此,當再次打開ViewControllerTwo時,必須再次加載視圖。 這就是在您的情況下多次調用viewDidLoad原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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