web-dev-qa-db-fra.com

Comment ajouter un contrôle de rafraîchissement à la barre de navigation des grands titres de la collection dans iOS 11?

Selon Apple le contrôle d'actualisation devrait faire partie de la grande barre de navigation des titres dans iOS 11.

Le contrôle d'actualisation fait partie de la barre de navigation (en tirant pour actualiser) lorsque j'ai activé le contrôle d'actualisation dans mon storyboard pour un UITableViewController.

refresh control with large titles

Je ne peux pas faire cela dans le storyboard pour toutes les autres vues comme UICollectionViewController. Lorsque j'ajoute un contrôle d'actualisation dans le code en tant que sous-vue, il ne fait pas partie de la barre de navigation:

refreshControl = UIRefreshControl()
collectionView?.addSubview(refreshControl)

Cela ressemble à ceci:

looks like this though

Comment puis-je ajouter un contrôle d'actualisation à ma vue de défilement personnalisée comme UICollectionViewController de telle manière que le contrôle d'actualisation s'affiche dans la barre de navigation lorsque de gros titres sont utilisés?

13
funkenstrahlen

Depuis iOS 10, UITableView et UICollectionView a la propriété refreshControl.

Donc, au lieu de:

tableView.addSubview(refreshControl)

tu fais:

tableView.refreshControl = refreshControl

et cela devrait fonctionner pour les nouveaux gros en-têtes dans iOS 11.

52
Martin

EDIT: la documentation a été mise à jour à un moment donné, et les informations ci-dessous ne sont plus vraies.

Comme spécifié par Apple dans la documentation UIRefreshControl.

Remarque Le contrôle d'actualisation étant spécifiquement conçu pour être utilisé dans une vue de table gérée par un contrôleur de vue de table, son utilisation dans un contexte différent peut entraîner un comportement indéfini.

Si votre VC est un UITableViewController, il fonctionnera exactement comme dans les applications système.

0
Michał Kałużny