[英]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 :)中放置一个断点,它会击中它。)但没有什么可以触发子视图控制器来做他们的事情。
从我看到的,您的视图层次结构是:
当主视图(前面提到的父视图控制器)加载时,它会通过通常的viewDidLoad
, viewWillAppear
, viewWillLoadSubviews
....并且在那里可以加载,布局和绘制所有上述视图。
没有任何事情可以触发这三个页面控制器进行任何加载。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.