Comment build un UIPageViewController dynamic

J'ai suivi le tutoriel de base ici pour créer un UIPageViewController qui balaie différents ViewControllers, que je crée sur Main.Storyboard. Je veux faire une application qui génère des ViewControllers dynamics, ce qui signifie que je devrais instancier les ViewControllers dans UIPageViewController par programmation.

Cependant, j'essaie d'aller un peu plus loin. Je vais avoir un set dynamic de ViewControllers à afficher en fonction des données que j'ai dans Firebase. À chaque balayage, je veux instancier une vue qui va contenir une image (l'image sera stockée sur Amazon Web Services, et un lien vers l'image sera stocké dans Firebase). J'ai actuellement cette configuration dans mon application Android et utilise Picasso pour charger l'image dans mon fragment.

Puisque toutes datatables vont être dynamics, je veux find le meilleur moyen de:

-Instate de nouveaux ViewControllers basés sur des données dynamics de Firebase qui changent chaque jour

-A chaque ViewController affiche l'image associée que j'ai stockée dans Firebase

Tous les ViewControllers auront le même "squelette", ce qui signifie que chacun aura une image accompagnée d'un text. Voici mon code actuel, et j'espérais recevoir des conseils / de l'aide.

import UIKit class PageViewTutorial: UIPageViewController { override func viewDidLoad() { super.viewDidLoad() dataSource = self if let firstViewController = orderedViewControllers.first { setViewControllers([firstViewController], direction: .Forward, animated: true, completion: nil) } } //this will be dynamic based on firebase data private(set) lazy var orderedViewControllers: [UIViewController] = { return [self.newColoredViewController("Green"), self.newColoredViewController("Red"), self.newColoredViewController("Blue")] }() private func newColoredViewController(color: Ssortingng) -> UIViewController { return UIStoryboard(name: "Main", bundle: nil) . instantiateViewControllerWithIdentifier("\(color)ViewController") } } // MARK: PageViewTutorialDataSource extension PageViewTutorial: UIPageViewControllerDataSource { func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? { guard let viewControllerIndex = orderedViewControllers.indexOf(viewController) else { return nil } let previousIndex = viewControllerIndex - 1 guard previousIndex >= 0 else { return nil } guard orderedViewControllers.count > previousIndex else { return nil } return orderedViewControllers[previousIndex] } func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController? { guard let viewControllerIndex = orderedViewControllers.indexOf(viewController) else { return nil } let nextIndex = viewControllerIndex + 1 let orderedViewControllersCount = orderedViewControllers.count guard orderedViewControllersCount != nextIndex else { return nil } guard orderedViewControllersCount > nextIndex else { return nil } return orderedViewControllers[nextIndex] } } 

Après de nouveaux commentaires je le ferais de cette façon:

  1. Faire un object Poll avec des variables text, images, id, jour et ainsi de suite.

  2. Faire un PollViewModel initialisé avec l'object Poll, qui répondra à la présentation de données

  3. Rendre une sous-class UIViewController / UITableViewController initialisée avec PollViewModel

  4. Créer une sous-class de UITableViewCell pour chaque partie de l'interface d'interrogation, qui peut être affichée dans UITableView

  5. Rendre une class PageViewTutorial (ou son propre ViewModel) initialisée avec le tableau actuel d'objects Poll à partir de FireBase

  6. Dans UIPageViewControllerDataSource gérer les objects de tableau et returnner vc initialisé avec le model initialisé avec l'object d'interrogation. 😉