viewDidAppear()在将视图控制器推送到导航堆栈之前调用

时间:2017-03-13 13:23:58

标签: ios swift uiviewcontroller swift3 uinavigationcontroller

我的故事板中有一个基本的导航设置:嵌入UIViewController的香草UINavigationController。在我的主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
  }

}

由于某些原因,当应用加载时<{1>} LabelledVC方法正在被调用( 之前它被推送到导航堆栈上)没有&#39对我有任何意义。您可以找到项目here

enter image description here

1 个答案:

答案 0 :(得分:2)

您的MainVC继承自LabelledVC。因此,当应用程序确实向控制器显示系统在 ViewController 中调用 viewDidAppear 但是您没有此方法的实现,因此系统从父类调用此方法。

enter image description here

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