J'ai des problèmes avec setNeedsDisplay. J'ai un UIView avec beaucoup de sous UIViews, créés dans Inteface Builder. J'ai aussi un bouton avec IBAction. Dans cette IBAction je veux redessiner/recharger tous les UIViews (ou tous UIElements, comme UILabel, UIWebView et ainsi de suite ..)recharger/rafraîchir subViews - setNeedsDisplay ne fonctionne pas
Je fais cela, qui ne fonctionne pas pour moi, ne sais pas pourquoi ..:
//redraw the UIViews
[self.view_card_0 setNeedsDisplay];
[self.view_card_1 setNeedsDisplay];
[self.view_card_stapel setNeedsDisplay];
//other UI Elements
[self.webView_0 setNeedsDisplay];
[self.webView_1 setNeedsDisplay];
[self.webView_stapel setNeedsDisplay];
[self.lblCardTitle_0 setNeedsDisplay];
[self.lblCardTitle_1 setNeedsDisplay];
[self.lblCardTitle_stapel setNeedsDisplay];
[self.img_card_0 setNeedsDisplay];
[self.img_card_1 setNeedsDisplay];
[self.img_card_stapel setNeedsDisplay];
Que faire pour redessiner/reload/actualiser tous les UIElements/UIViews et subviews?
EDIT 1:
Comment je charge la vue:
detailViewController = [[DetailViewController alloc]
initWithNibName:@"DetailViewController_iPad" bundle:[NSBundle mainBundle]];
Le detailviewcontroller n'a pas viewcontroller, juste UIViews, voici la hierarchie:
- UIView
- UIViewContainer
--- --- UIView0
UIView1
--- UIViewStapel
Ce que je pense à faire:
* Je ne veux pas réinitialiser le UIView, je veux changer la contexte et le contenu d'entre eux. *
J'ai dans mon detailview beaucoup de sous-vues (uiviews), voir ci-dessus hierarchie. J'affiche du contenu dans les UIViews, le contenu provient de CoreData.
La vue1 contient la ligne actuelle de coreData.
La vue0 contient la ligne précédente de coreData.
Le viewStapel contient la ligne suivante de coreData.
Avec IBAction je veux itérer les lignes CoreData, afficher la ligne suivante en cours si l'action est called..and ainsi de suite ..
Connexion, les données sont modifiées, mais pas affiché dans la UIViews . A cause de cela j'ai besoin d'un redessiner ou recharger ou quelque chose comme ça, pour afficher les données actuelles.
EDIT 2: SOLVED
J'ai mis le code dans une nouvelle méthode et d'appeler cette méthode a résolu mon problème.
Pourquoi fais-tu cela? Qu'attendez-vous qu'il fasse? En général appeler '-setNeedsDisplay' sur un autre élément de l'interface ne fera * rien *, car si l'élément de l'interface utilisateur doit mettre à jour son affichage (en réponse aux changements de propriétés), il aura déjà appelé cette méthode sur lui-même. –
Je change le contenu et aussi la couleur/image sur cette IBAction. le contenu provient de CoreData. J'ai besoin de redessiner les uiviews pour afficher les changements sur ibaction. – brush51
setNeedsDisplay ne fait que redessiner la vue, elle ne réinitialise pas ses propriétés (par exemple, la couleur). Pour ce faire, vous devrez les recharger à partir du fichier nib (voir la réponse ci-dessous). –