2017-09-08 3 views
0

Je suis en train de créer une application flashcard iPhone qui sera utilisée pour étudier divers termes. Actuellement, j'utilise un UIPageViewController pour afficher chaque carte consécutive (contrôleur de vue). Lorsque l'utilisateur appuie sur une carte, elle retourne et leur indique le dos, et quand ils balaient vers la gauche ou la droite, ils peuvent faire défiler les cartes. Jusqu'à présent, cela fonctionne très bien, mais je veux être en mesure de montrer à la fois l'avant et l'arrière de la carte en mode paysage. Normalement, ce serait facile à faire en utilisant la méthode func pageViewController(_ pageViewController: UIPageViewController, spineLocationFor orientation: UIInterfaceOrientation) de UIPageViewControllerDelegate et en renvoyant .mid si l'orientation est horizontale. Cependant, puisque je n'utilise pas .pageCurl mais .scroll comme transitionStyle de ma pageViewController, cette méthode n'est jamais appelée. Apple Documentation Il ne peut pas non plus être défini manuellement si vous n'utilisez pas .pageCurl. docs Apple disent:Comment faire pour définir UIPageViewControllerSpineLocation à .mid lors de l'utilisation de transitionStyle .scroll

A spine location is only valid if the transition style is pageCurl. If the transition style is pageCurl, the default value for this property is min; otherwise, the default is none.

J'ai essayé d'ajouter une méthode qui est appelée lorsque l'orientation est paysage:

func showBothSides(){ 
    let currentViewController = self.pageViewController!.viewControllers![0] as! PracticePageDataVC 
    let viewControllers: [UIViewController] = [currentViewController, currentViewController] 
    self.pageViewController!.setViewControllers(viewControllers, direction: .forward, animated: true, completion: {done in }) 
} 

Mais retourne l'erreur: « 'Le nombre de contrôleurs de vue fournis (2) ne correspond pas au nombre requis (1) pour la transition demandée '"

Donc, fondamentalement, je suis à la recherche d'une solution alternative pour montrer deux contrôleurs de vue côte à côte tout en conservant la fonctionnalité de la hor transition de défilement horizontal entre les cartes.

Répondre

0

So basically I am looking for an alternative solution to show two view controllers side by side while still maintained the functionality of scrolling horizontally between cards

Vous avez deux choix.

  • Votre « page » dans le UIPageViewController peut être lui-même un contrôleur de vue parent personnalisé (conteneur) dont les deux points de vue des enfants sont présentés côte à côte. Vous pouvez supprimer complètement l'utilisation de UIPageViewController et implémenter votre propre interface à l'aide d'une vue de défilement de pagination horizontale (c'est ce que nous faisions avant l'existence des contrôleurs de page vue, après tout).

+0

Merci! J'avais peur de ça ... mais je me demandais/j'espérais qu'il y avait une solution rapide et facile. Appréciez l'aide! –

+0

Notez qu'aucune de ces approches ne vous donnera une sorte de défilement magique de demi-page. La taille de la page est la taille de la vue déroulante. – matt