relativement nouvelle à Xcode/Swift
, mais ont une certaine expérience dans d'autres langues.étiquette de mise à jour dans UIPageView
Je suis au stade de l'enfance d'une application et essaie d'atteindre les fonctionnalités suivantes:
Dans un environnement UIPageView
, lorsque l'utilisateur fait glisser vers l'avant, l'étiquette (dont la valeur est un nombre entier) augmente de 1. Lorsque l'utilisateur fait défiler vers l'arrière, l'étiquette diminue de 1.
J'ai un seul UIViewController
comme page de contenu avec l'ID de table de montage PageContentViewController
.
Essentiellement, mes pensées sont à déclarer une variable entière initialement fixé à 0 et puis créer une fonction swipedBack()
et swipedRight()
qui met à jour la valeur de la variable et définit ensuite le texte de l'étiquette sur la PageContentViewController
à la valeur de cette variable . Les fonctions renvoient alors le nouveau PageContentViewController
.
Je reçois un comportement particulier. A savoir, l'application est en cours de construction et fonctionne bien.
Les charges de l'écran initial avec une étiquette de 0. Je swipe vers l'avant, et mises à jour 1. mais ... si je balayez vers le avant à nouveau, l'étiquette reste comme l'un. MAIS ALORS ... si je continue d'aller de l'avant, il agit alors comme désiré - passe à 2, puis à 3. Puis, si je change de direction, cela devient encore plus particulier.
Si je suis à une valeur de quatre, puis balayez vers l'arrière, il va diminuer à 3. Mais puis en revenant à nouveau il va revenir à 4, puis en continuant à glisser, il se comportera comme prévu (4,3, 2,1 ...). J'ai évidemment un malentendu conceptuel et j'apprécierais de l'aide.
Voici mon code:
import UIKit
class ViewController: UIPageViewController, UIPageViewControllerDataSource {
var arrPageTitle: NSArray = NSArray()
var t: Int = 0
override func viewDidLoad() {
super.viewDidLoad()
self.dataSource = self
self.setViewControllers([getViewControllerAtIndex()] as [UIViewController], direction: UIPageViewControllerNavigationDirection.forward, animated: false, completion: nil)
}
func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
return swipedBack()
}
func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
return swipedForward()
}
func getViewControllerAtIndex() -> PageContentViewController {
let pageContentViewController = self.storyboard?.instantiateViewController(withIdentifier: "PageContentViewController") as! PageContentViewController
pageContentViewController.strTitle = "\(t)"
return pageContentViewController
}
func swipedForward() -> PageContentViewController {
let pageContentViewController = self.storyboard?.instantiateViewController(withIdentifier: "PageContentViewController") as! PageContentViewController
t = t + 1
pageContentViewController.strTitle = "\(t)"
return pageContentViewController
}
func swipedBack() -> PageContentViewController {
let pageContentViewController = self.storyboard?.instantiateViewController(withIdentifier: "PageContentViewController") as! PageContentViewController
t = t - 1
pageContentViewController.strTitle = "\(t)"
return pageContentViewController
}
}
Merci. J'ai essayé d'implémenter UISwipeGestureRecognizers de base et j'ai essayé d'appeler des fonctions de swipeBack et de swipeForward quand ces balayages se produisent. Mais l'étiquette ne se met pas à jour lorsque je fais glisser le simulateur. '@IBAction func swipeBack (_ expéditeur: UISwipeGestureRecognizer) { t = t-1 lblTitle.text = "Retour passée dans le lecteur" } @IBAction func swipeForward (_ expéditeur: UISwipeGestureRecognizer) { t = t + 1 lblTitle.text = "chipé avant" } ' Ceci est appelé dans le fichier PageContentViewer.Swift –
Pourquoi sont-ils IBActions? Cela peut faire partie du problème. Faites-en simplement des fonctions normales. –
Je les ai créés sur le storyboard? Glisser un objet de reconnaissance de mouvement sur le contrôleur de vue contentPageViewer? Ils génèrent automatiquement avec cette syntaxe ... –