簡體   English   中英

在將視圖控制器推入導航堆棧之前調用viewDidAppear()

[英]viewDidAppear() called before view controller is pushed onto navigation stack

我的情節提要中有一個基本的導航設置:嵌入在UINavigationController的香草UIViewController 在我的主要VC中,我有兩個按鈕,每個按鈕都連接到UIViewController子類: LabelledVC 在子類的viewDidAppear(_:)方法中,將導航項的titleView設置為自定義圖像:

class LabelledVC: UIViewController {

  override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    let logoImage = UIImage(named: "apple")
    let logo = UIImageView(image: logoImage)

    logo.contentMode = .scaleAspectFit
    logo.frame = CGRect(x: 0, y: 0, width: 32, height: 32)

    navigationItem.titleView = logo
  }

}

由於某種原因,在應用加載時( 在將其推送到導航堆棧之前)會調用LabelledVCviewDidAppear(_:)方法,這對我來說沒有任何意義。 您可以在此處找到該項目。

在此處輸入圖片說明

您的MainVC繼承自LabelledVC。 因此,當應用程序確實向該控制器顯示該系統時,系統會在ViewController中調用viewDidAppear ,但您沒有此方法的實現,因此系統會從父類中調用此方法。

在此處輸入圖片說明

另一件事。 對於您的示例,配置NavigationItem的最佳位置是viewDidLoad方法。

暫無
暫無

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

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