[Résolu] Un UIPageViewController avec views différentes sur le storyboard
Bonjour à tous,
en gros, je dois faire un pageViewController avec plusieurs views (et leur controller respectif) différentes.
Donc pas comme ici, car dans ce cas toutes les pages ont le même contenu (une image et un title).
Moi je dois avoir des pages totalement différentes avec leur controller associé totalement dédié.
Je me suis donc inspiré de ce post fantastique, que j'ai du adapter (quelques erreurs, et le contexte), tout en recopiant mot pour mot le code, non pas pour pomper, mais comme je galèrais à l'adapter au mien, je voulais déjà vérifier qu'il fonctionnait bien.
Il fonctionne parfaitement. Je me suis fais 4 pages avec juste une couleur de fond différentes pour bien les identifier.
Alors j'ai quelques questions :
1- Cela concerne le fait que si je garde dans la fonction suivante (appelé dans le viewDidload) :
createPageViewController()
le code suivant :
let pageController = self.storyboard!.instantiateViewControllerWithIdentifier("PageController") as UIPageViewController
je ne parviens pas à faire une transition autre que la ".PageCurl" qui semble être par défaut.
Pour faire une transition ".Scroll", je dois faire le code suivant (à la place du précédent) :
let pageController = UIPageViewController(transitionStyle: UIPageViewControllerTransitionStyle.Scroll, navigationOrientation: UIPageViewControllerNavigationOrientation.Horizontal, options: nil )
Et là , ça fonctionne avec le ".Scroll".
Y-a-t-il une façon de faire la transition ".Scroll" en conservant l'accès au UIPageViewController du storyboard ?
Et sinon, à quoi sert de placer un UIPageViewController dans le storyboard si je ne le cible pas ?
2- Ensuite, si je met en commentaire l'appel de la fonction :
setupPageControl()
dans le viewDidLoad, j'ai une barre blanche en bas de l'écran. Normal, puisque cet espace semble réservé au UIPageControl.
Donc si je le remet, j'ai bien mon UIPageControl en bas de l'écran, qui occupe l'espace vide réservé à cet effet.
Mais moi, j'aurai besoin de le placer en haut de mon écran. Enfin, pas tout-à -fait en haut, mais à un emplacement précis.
J'ai tout essayé : placer un UIPageControl dans le storyboard, ou bien le placer en code (comme plus bas), et plein d'autres choses inintéressantes :
var pageControl:UIPageControl = UIPageControl()
pageControl = UIPageControl(frame: CGRectMake(0,0,1024,300))
self.view.addSubview(pageControl)
Et si je remplace :
let appearance = UIPageControl.appearance()
par :
let appearance = pageControl.appearance()
j'ai l'erreur suivante :
UIPageControl' does not have a member named 'appearance'
C'es un comble !
Donc, rien n'y fait... Il reste en bas et parfait d;-)
3- Et si j'y parvenais (je ne sais pas encore comment), - Comment supprimer l'espace blanc réservé à cet effet ?
En résumé :
1- Le .Scroll et l'accès par :
instantiateViewControllerWithIdentifier
2- Un UIPageControll en position perso
3- L'espace blanc en bas de l'écran
Voilà , merci d'avance pour vos remarques. En tout cas, ce lien (le même que plus haut) me semble quand même excellent.
Amicalement
Réponses
Là , chui bluffé,
ou mon post est débile, ou personne ne sait (chose dont je doute), ou plutôt, manque de temps, chose que je comprend grave...
Merci pour tous ceux (23) qui ont pris le temps de lire.
Si tu prends les deux lignes :
la première initialisation te crée un pageController avec un identifiant que tu passe en paramètre, mais le reste des paramèrtes sont mis par défaut. ( il se trouve que valeur du scoop par défaut est l'animation curl).
par contre le pageController expose dans son API une proprette qui va te permettre de le configurer a la fin de son initlaisation.
donc tu peux faire un truc du genre :
2.
.....
Plus tard ( manger ).
Ben j'avais déjà essayer, off course, mais ça ne fonctionne pas
J'ai l'erreur suivante
J'ai tenté également
qui donne cette erreur
si je déclare dans mes variables (et évidemment que je vire le "let"
et
et
Je suis d'accord, y'a un truc inexplicable
Merci pour ta proposition
Et bonAp...
Bon, après plusieurs heures de galère, ça progresse, c'est quand même bien chiant ce truc.
Et j'ai encore quelques soucis (voir plus bas).
Je rappelle que le but était de me faire un UIPageControl perso positionné où je le désire.
Voilà le code :
Déjà , c'est pas mal.
Maintenant le problème est que j'ai toujours la barre blanche en bas, réservée au UIPageControl par défaut du UIPageViewController.
Quelqu'un aurait-il l'idée géniale pour la supprimer ?
La p'tite vidéo
Merci d'avance
Désolé pour la copie du code, en fait re-copier-coller dans la fenêtre de code fait que on a les couleurs de Xcode (ça, je trouve ça cool), mais on n'est plus dans la zone de code - oups
Reglé
Ah super, comment t'as fait ça ?
Et c'est bien en couleur non ?
J'ai modifié le message, couper le code, introduit les nouvelles sections balisées et collé le code là dedans.
Tout simplement.
Merci.
Je suppose que le UIPageViewController reserve une vue pour les pageControl dès que il trouve que tu as implémenter les méthode du dataSource :
As-tu implémenté ces méthodes ?
Salut Samir,
ben oui, elles sont implémentés, et du coup, je viens de comprendre (grâce à ton explication), je les ai supprimées, et effectivement, la barre blanche a disparue.
Génial. Je vais pouvoir me concentrer à intégrer tout ce truc dans mon projet.
Merci à tous. Je met résolu