繁体   English   中英

viewDidload和viewDidAppear没有被调用?

[英]viewDidload and viewDidAppear not being called?

我有3个视图控制器和一个容器视图控制器。 我将这3个视图控制器添加为容器中的子视图控制器。 当我启动应用程序时,我在所有视图控制器中的viewDidload和viewDidAppear中都有print语句。

问题是:当我“滚动”回那些视图并再次“出现”时,print语句不会执行,也不会在viewDidAppear和viewDidLoad中执行任何代码。 为什么会这样?

这是我的代码,我实例化我的视图控制器。 谢谢您的帮助!

override func viewDidLoad() {
    super.viewDidLoad()

    scrollView.delegate = self



    let storyboard = UIStoryboard(name: "Main", bundle: nil)

    page1 = storyboard.instantiateViewController(withIdentifier: StoryboardIdentifiers.feedViewController.rawValue) as! FeedViewController
    page1.view.translatesAutoresizingMaskIntoConstraints = false
    page1.delegate = self
    scrollView.addSubview(page1.view)
    addChildViewController(page1)
    page1.didMove(toParentViewController: self)

    page2 = storyboard.instantiateViewController(withIdentifier: StoryboardIdentifiers.favoritesViewController.rawValue) as! FavoritesViewController
    page2.view.translatesAutoresizingMaskIntoConstraints = false
    page2.delegate = self
    scrollView.addSubview(page2.view)
    addChildViewController(page2)
    page2.didMove(toParentViewController: self)

    page3 = storyboard.instantiateViewController(withIdentifier: StoryboardIdentifiers.settingsViewController.rawValue) as! SettingsViewController
    page3.view.translatesAutoresizingMaskIntoConstraints = false
    scrollView.addSubview(page3.view)
    addChildViewController(page3)
    page3.didMove(toParentViewController: self)


}

是什么会触发那些视图控制器在其生命周期中循环?

父视图控制器,无论它的名称是什么,都将运行它的加载周期。 所有观点也将贯穿其中。 (我敢打赌,如果你继承了一个视图,并使用它,在draw(rect :)中放置一个断点,它会击中它。)但没有什么可以触发子视图控制器来做他们的事情。

从我看到的,您的视图层次结构是:

  • 主要观点
  • 在主视图中滚动视图
  • 滚动视图内的三个页面视图

当主视图(前面提到的父视图控制器)加载时,它会通过通常的viewDidLoadviewWillAppearviewWillLoadSubviews ....并且在那里可以加载,布局和绘制所有上述视图。

没有任何事情可以触发这三个页面控制器进行任何加载。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM