2011-11-04 3 views
4

Dans l'iPad, vous pouvez modifier l'apparence de l'application dans une vue qui est modalement poussée. Mais après avoir sélectionné un thème et rejeté la vue, l'apparence ne change pas. Si j'appuie sur une autre vue en plein écran, la vue est mise à jour.apparence proxy recharger vue

Comment puis-je forcer pour mettre à jour/rafraîchir/repeindre l'apparence?

EDIT

J'ai essayé de jouer setNeedsDisplay partout, mais l'application ne répond pas directement. Comme la référence l'indique, la vue est marquée pour être redessinée dès que la boucle redémarre. Et comme la vue est déjà chargée avec une autre apparence derrière la vue changeur d'apparence modalement poussée, elle n'est pas rechargée.

Répondre

2

Je rapide le fixe. Je commence juste avec une vue modale en plein écran et après que j'ai changé le thème je rejette la vue, ainsi les vues derrière elle seront mises à jour.

Si quelqu'un a une meilleure solution, j'aime vraiment en entendre parler.

+0

c'est moche ... mais ça marche :) Et je suis aussi comme pour voir une meilleure solution – Kubba

0

[view setNeedsDisplay] est généralement utilisé pour indiquer à la vue qu'il doit être redessiné.

[view setNeedsLayout] est la même pour -layoutSubviews

Voir:

+0

Oui, je sais, mais l'application ne répond pas à l'appel. – Justin

0

J'ai eu plus ou moins le même problème en changeant l'apparence de UISliders. L'utilisation de [self.view setNeedsDisplay] n'a eu aucun effet.

Avec la ligne de code ci-dessous, l'apparence des curseurs n'a pas changé comme prévu, mais seulement après si une autre vue a été chargée et rejetée. La création d'IBOutlets pour chaque curseur et le réglage de tintcolor comme ci-dessous ont eu l'effet désiré et les changements ont eu lieu immédiatement.

[volumeSlider setMinimumTrackTintColor:[UIColor greenColor]]; 
[brightnessSlider setMinimumTrackTintColor:[UIColor greenColor]];