2017-10-15 2 views
0

J'ai un viewcontroller (FirstVC.swift) avec une vue de conteneur, dans la partie supérieure, qui a un contrôleur de page intégré (SecondPageVC.swift), et une vue qui a 3 boutons dans la partie inférieure. Au début, le seul bouton visible est le bouton du milieu et les deux autres sont cachés. Si l'utilisateur atteint la dernière page, les deux autres boutons doivent apparaître. Comment puis-je passer la valeur booléenne qui va faire apparaître les boutons?Définir la visibilité du bouton lorsque l'utilisateur est dans la dernière page de uipageviewcontroller

Dans mon SecondPageVC.swift

func pageViewController(pageViewController: UIPageViewController, 
    viewControllerAfterViewController viewController: UIViewController) -> UIViewController? { 
    if index == myViewControllers.count-1{ //if last page 
     hide = true 
    } 
+0

Donc, vous voulez transmettre votre variable hide à votre FirstVC? – Arrabidas92

+0

Oui. Ainsi mes deux autres boutons apparaîtront si l'utilisateur a atteint la dernière page. –

Répondre

2
  1. Définir un protocole appelé PageDelegate comme ceci:

protocol PageDelegate { func hasReachLastPage(hasReached: Bool) }

  1. Créer un délégué var dans votre SecondPageVC comme ceci: weak var delegate: PageDelegate?

  2. Sur votre pageViewController func appelé votre func hasReachLastPage(hasReached: Bool) comme ceci:

    func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController? { if index == myViewControllers.count-1{ //if last page delegate?.hasReachLastPage(true) }

  3. Sur votre FirstVC fait l'adopter le protocole que vous venez de créer comme ceci: FirstVC : PageDelegate

  4. Ensuite, sur votre FirstVC lorsque vous avez une instance de votre SecondPageVC vous allez mettre votre délégué variable qui FirstVC comme ceci: SecondPageVC.delegate = self vous dites que FirstVC va gérer les méthodes de délégué SecondPageVC

  5. Enfin toujours sur votre FirstVC vous devez mettre en œuvre le corps de func hasReachLastPage(hasReached: Bool) par hidding ou non vos deux boutons comme celui-ci:

    func hasReachLastPage(hasReached: Bool) { if hasReached { // Unhide two buttons } else { // Hide buttons or whatever } }

Voici comment mettre en œuvre le modèle de délégué . C'est quelque chose de très utilisé et très utile pour transmettre des données entre les contrôleurs de vue.

0

Donc, si je comprends bien, vous voulez juste passer cette propriété hide à l'instance de FirstVC? Si oui, je vous conseillerais de définir un protocole SecondPageVCDelegate avec une méthode secondPageVCDidReachLastPage:. L'affectation du délégué peut être faite en préparation de la méthode de segmentation du FirstVC.