2010-09-02 7 views
1

J'ai une application qui crée par programme des étiquettes et des champs de texte basés sur le contenu d'un fichier texte. Chaque fois que le contrôleur de vue est chargé, il crée des champs de texte et des étiquettes qui sont différents à chaque fois. Mon problème est que je dois effacer les étiquettes et les champs de texte sans relâcher le contrôleur de vue puisque j'ai besoin de garder une trace du contrôleur de vue. J'ai essayé self.viewController = nil, mais je suis assez sûr que cela entraîne une fuite de mémoire. Est-il possible de supprimer toutes les sous-vues d'une vue?SDK iPhone Gestion de la mémoire pour l'application Multiview

Répondre

0

Si vous avez une vue nommée view, vous devriez être en mesure d'éliminer tous les sous-vues de la vue en utilisant ce code:

for (UIView *subview in view) { 
    [subview removeFromSuperview]; 
} 
3

Ce que Greg voulait dire est ceci:

for (UIView *subview in self.view.subviews) { 
    [subview removeFromSuperview]; 
} 

Cela peut ne pas fonctionner comme vous le penseriez, car Objective C ne l'aime pas lorsque vous modifiez un tableau pendant que vous l'itérez dans une boucle for. Un choix plus sûr serait le suivant:

while ([self.view.subviews count] > 0) { 
    [[self.view.subviews lastObject] removeFromSuperview]; 
}