[英]viewDidLoad() is called every time after dismiss() of UIImagePickerController()
[英]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.