Ich habe 3 View-Controller und einen Container-View-Controller. Ich füge diese 3 View-Controller als untergeordnete View-Controller in den Container ein. Wenn ich die App starte, habe ich print-Anweisungen in viewDidload und viewDidAppear in allen View-Controllern, die ausgeführt werden.viewDidload und viewDidAppear wird nicht aufgerufen?
Das Problem ist: Wenn ich zurück "scroll" auf diese Ansichten und es "erscheint" wieder die print-Anweisungen ausführen noch keinen Code in ViewDidAppear noch ViewDidLoad. Warum passiert dies?
Hier ist mein Code, wo ich meine View-Controller instanziieren. Danke für die Hilfe!
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)
}
Vielen Dank für die detaillierte Antwort und Sie sind richtig mit Ihren Stichpunkten. Aus meinem Verständnis heraus, während ich zu den 3 View-Controllern scrolle, die sich in der Scroll-Ansicht befinden, würde viewDidAppear usw. nicht mehr ausgelöst werden, da sie geladen wurden? Auch wenn ich zum nächsten blättern gehe? (wirklich neu dazu!) Auch ich dachte "Was würde diese View-Controller veranlassen, durch ihre Lebenszyklen zu fahren?" wäre, wenn ich in dieser bestimmten Ansicht scrollte, würde es dazu führen, dass es ausgeführt wird. Aber ich denke nicht? – user7097242
Ich habe versucht, dies zuvor in Ihrer vorherigen Frage zu fragen - was ist der Grund für diese 3 VCs? Verwechseln Sie UIViews nicht mit UIViewControllern. (Es ist ein häufiger Fehler für Neulinge, und ich sage das in Bezug auf Sie.) Die Art und Weise arbeiten ist die "Eltern VC" steuert die Bildlaufansicht ** und ** alle Ansichten darin. In einer alten Version meiner App hatte ich ein UIPageView und ein UIScrollView, das mit zwei GLKViews (ähnlich wie UIViews) darin funktionierte. Alles - das Laden der Bilder, das Scroll-Fenster, das Ändern der Seitenkontrolle - wurde mit einem einzigen UIViewController bearbeitet. Ich füge hinzu .... – dfd
Ich habe die Bildverarbeitung auf Funktionen in einem Framework ausgelagert, weil ich diesen Code teilen wollte. Ich habe das automatische Layout in eine andere Datei ausgelagert. Ich habe die Verarbeitung der Bildlaufansicht und der Seitenaufsichtsdelegaten in eine UIViewController-Erweiterung verschoben. Sonst hätten Sie einen massiven View-Controller. Ich habe auch ein paar andere Erweiterungen gemacht. Aber der Hauptpunkt dieser beiden Kommentare ist - ich denke, es sei denn, Sie haben einen besonderen Bedarf ** (und es kann einen geben), um Ihre Ansichten in Ihrer Bildlaufansicht haben ihren eigenen Controller haben, sind Sie einen Pfad mit unbeabsichtigte Nebenwirkungen. – dfd