2017-08-04 3 views
2

J'ai un contrôleur de vue qui a une vue déroulante, et la vue de défilement a une vue. Ainsi, la vue a beaucoup de boutons et d'étiquettes qui sont montrés en fonction des données qui viennent d'api. Et j'ai un bouton après l'avoir pressé, je veux recharger une vue (c'est du contenu).Comment recharger le contenu d'une vue ui Swift

Répondre

1

un du hack facile et PAS la méthode recommandée est de faire

self.view.setNeedsLayout() 

vous pouvez également faire self.viewDidLoad() OU self.viewWillAppear(true)

bien les différentes approches recommandées, vous pouvez utiliser sont les suivantes

Délégation KVO Notifications

L'autre façon serait d'utiliser un tableView et l'utilisateur reloadData()

Délégation: https://www.andrewcbancroft.com/2015/04/08/how-delegation-works-a-swift-developer-guide

KVO: https://cocoacasts.com/key-value-observing-kvo-and-swift-3/

Notifications: http://dev.iachieved.it/iachievedit/notifications-and-userinfo-with-swift-3-0/

+0

Ajout 'self.view.setNeedsLayout()' 'soit viewDidLoad()' 'ou viewWillAppear()' n'a pas fait mon rafraîchissement de l'écran. Je reviens à un UIView d'un modal si cela fait une différence. – Dan

0

La meilleure et appropriée est de définir une méthode cela va mettre en page chaque bouton, indiquant s'il doit être caché ou afficher et mettre à jour son cadre.

Le plus facile, mais laid est à façon utiliser:

self.viewToReload.setNeedsLayout() 
self.viewToReload.layoutIfNeeded()