Compatibile con Xcode 8

Il Page View Controller. Creare un Content Slider di View Controller

ENTRA NEL NOSTRO GRUPPO FACEBOOK

×

Corso creare applicazioni per iOS con il linguaggio Swift

L'oggetto che imparerai ad utilizzare in questa lezione si chiama UIPageViewController e gestisce uno Slider di ViewController. il PageViewController o PVC è un contenitore che permette di navigare tra più ViewController utilizzando il movimento del dito sul display. Cioè, scelti i View Controller da mostrare, sarai in grado scorrerli grazie al movimento del dito da destra a [...]

Torna a: Corso creare applicazioni per iOS con il linguaggio Swift > TableView, TabBar e CollectionView
  • Arcy

    Ottimo molto utile..anche se non capisco perché Apple non abbia fatto gestire con i segue anche il Page View Controller..un motivo sicuramente ci sarà :-)

  • Lollo82

    Ciao Peppe. Una curiosità.
    Allora… Dall’UIPageViewController non deve partire nessun segue verso nessuno dei tre ViewController esatto??? Ma allora perchè nella CustomPageViewController (subclass del UIPageViewController) creata e poi associata al PageViewController vi è il prepareForSegue???
    Grazie mille per la delucidazione!!!

    • Ciao Lollo,
      Esattamente. Al PageViewController abbiamo assegnato i ViewController grazie agli Storyboard Identifier. C’è comunque il prepareForSegue perché si può customizzare l’oggetto in modo dargli un comportamento simile ad un normalissimo viewcontroller.

      Per esempio se si vuole far partire un segue verso un altro ViewController, qualunque sia il VC visualizzato dal PVC, si può far partire il segue direttamente da qui.

      Esempio:

      Il PVC viene usato per la visualizzazione di un’anteprima dell’app. Quando è finita l’anteprima, si fa partire un segue dal PVC ad un ViewController Home.

      In caso non fosse chiaro, fammi sapere ;)
      Giuseppe

  • Marcello Ruta

    Per quanto riguarda la modifica dell’aspetto del Page Control in swift 3, la sintassi del seguente metodo appearanceWhenContainedInIstancesOfClasses è cambiata in UIPageControl.appearance(whenContainedInInstancesOf: [UIAppearanceContainer.Type]) pertanto l’implementazione fatta in swift 2 con UIPageControl.appearanceWhenContainedInInstancesOfClasses([self.dynamicType]) va sostituita con la seguente: UIPageControl.appearance(whenContainedInInstancesOf: [type(of: self)])

    In definitiva nel viewDidLoad la variabile di tipo statica sarà:

    let page_control = UIPageControl.appearance(whenContainedInInstancesOf: [type(of: self)])
    page_control.currentPageIndicatorTintColor = UIColor.blue
    page_control.pageIndicatorTintColor = UIColor.green
    page_control.backgroundColor = UIColor.orange

    @giuseppe_sapienza:disqus fai un check e correggimi se sbaglio….. io lo implementato così è mi funziona…

  • Marcello Ruta

    per ricavare l’indice dell’array ho percorso una strada leggermente più contorta, posto qui il code:

    // Ricaviamo l’indice dell’array
    let start_index = self.vc_array[(viewControllers?.startIndex)!]
    let current_index = self.vc_array.index(of: start_index)

    questa è la function completa:

    func pageControlValueChanged() {
    print(“Current page: “, self.page_control.currentPage)

    let current_page = self.page_control.currentPage
    // Ricaviamo l’indice dell’array
    let start_index = self.vc_array[(viewControllers?.startIndex)!]
    let current_index = self.vc_array.index(of: start_index)

    print(current_index)

    var direct: UIPageViewControllerNavigationDirection!

    if current_page >= current_index! {
    direct = UIPageViewControllerNavigationDirection.forward
    } else {
    direct = UIPageViewControllerNavigationDirection.reverse
    }

    let vc = UIStoryboard(name: “Main”, bundle: nil).instantiateViewController(withIdentifier: self.vc_array[current_page])

    self.setViewControllers([vc], direction: direct, animated: true, completion: nil)
    }

    • grazie mille Marcello ;)

      Giuseppe Sapienza
      Founder | xCoding.it – Sviluppa, Crea e Codifica i tuoi Sogni

Start typing and press Enter to search