web-dev-qa-db-fra.com

Comment implémenter UIPageControl dans Swift

Ok, donc je me bats ici et je n’ai pas pu trouver une solution qui marche. J'ai appris moi-même Swift sans expérience avec l'Objectif C (je sais, je sais). 

Dans mon application, j'ai ma UIViewController principale, une sous-vue transparente mais glissant à partir du bas de l'écran, puis 4 sous-vues de la sous-vue glissante qui fonctionnent toutes UIScrollViews. La fonction de pagination est activée et cela fonctionne très bien, mais j'aimerais ajouter un contrôle UIPage pour chacune d’elles. Je ne peux sérieusement pas comprendre les délégués et comment mettre en œuvre l'utilisation de Swift. Toute aide serait très appréciée! 

En outre, je fais tout cela par programme, donc pas d'IB s'il vous plaît. Heureux de fournir du code si cela peut aider. Merci

19
Ross Isdaner

Il suffit de l'installer dans le code comme ceci:

private var pageControl = UIPageControl(frame: .zero)

private func setupPageControl() {

    pageControl.numberOfPages = controllers.count
    pageControl.translatesAutoresizingMaskIntoConstraints = false
    pageControl.currentPageIndicatorTintColor = UIColor.orange
    pageControl.pageIndicatorTintColor = UIColor.lightGray.withAlphaComponent(0.8)

    let leading = NSLayoutConstraint(item: pageControl, attribute: .leading, relatedBy: .equal, toItem: view, attribute: .leading, multiplier: 1, constant: 0)
    let trailing = NSLayoutConstraint(item: pageControl, attribute: .trailing, relatedBy: .equal, toItem: view, attribute: .trailing, multiplier: 1, constant: 0)
    let bottom = NSLayoutConstraint(item: pageControl, attribute: .bottom, relatedBy: .equal, toItem: view, attribute: .bottom, multiplier: 1, constant: 0)

    view.insertSubview(pageControl, at: 0)
    view.bringSubview(toFront: pageControl)
    view.addConstraints([leading, trailing, bottom])
}
7

Les délégués ne sont que les méthodes d'une classe, qui peuvent être transmises à une autre classe. Ces méthodes sont généralement des rappels.

par exemple. Un rappel pour un TextField, lorsque l'utilisateur appuie sur return, peut être implémenté dans un délégué. Le délégué peut être implémenté dans la classe ViewController. 

Désormais, lorsque l'utilisateur clique sur retour, l'objet TextField appelle la méthode déléguée dans l'objet ViewController. L'avantage, c'est que vous pouvez accéder à toutes les variables et méthodes de l'objet ViewController à partir de la méthode déléguée. Sinon, vous auriez besoin d'un handle vers l'objet ViewController dans l'objet TextField lui-même.

Les délégués sont implémentés sous forme de protocoles, qui ne sont que des interfaces. Ainsi, si ViewController implémente le protocole TextFieldDelegate, tous vos rappels de champs de texte peuvent être appelés à partir de l'objet ViewController.

J'espère que ça aide.

0
Santosh

Intégration UIPageControl avec Swift 4

func configurePageControl() {
    self.pageview.numberOfPages = items.count
    self.pageview.currentPage = 0
    self.pageview.tintColor = UIColor.red
    self.pageview.pageIndicatorTintColor = UIColor.black
    self.pageview.currentPageIndicatorTintColor = UIColor.green
}
0
Arpan Shah