Comment faire pour supprimer des sous-vue?
J'ai ajouté des sous-vue (ViewController) à mon ViewController:
Location *location = [[Location alloc] initWithNibName:@"Location" bundle:[NSBundle mainBundle]];
[self.subView addSubview:location.view];
Comment puis-je supprimer ce dernier sous-vue?
Je sais que pour la suppression de tous les sous-vues est:
for (UIView *subview in [self.view subviews]) {
[subview removeFromSuperview];
}
- Vous ne devriez pas vraiment être l'ajout d'un autre viewController de vue à un viewController est vue comme ça
- il n'y a aucun moyen que je pouvais enlever que addedd sous-vue?
- Eh bien, vous pouvez, mais je faisais juste une observation, au sujet d'une éventuelle douleur au point et de la racine de nombreux délicat de bugs. Si vous souhaitez supprimer ce point de vue particulier, alors pourquoi ne pas faire un ivar qui va vous donner une référence à la
location
viewController de laview
lui-même et puis vous n'avez pas besoin de monter à travers les sous-vues... - Pouvez-vous expliquer cela plus en détails, les pls parce que je ne comprends pas ou donner de la mi lien vers un exemple?
Vous devez vous connecter pour publier un commentaire.
Rapide et sale: Donner votre point de vue, une marque, de sorte que vous pouvez plus tard l'identifier:
Puis, à supprimer:
Un plus propre, plus rapide, plus facile à lire et à maintenir alternative serait de créer une variable ou une propriété pour accéder à la vue:
Dans l'interface:
Dans la mise en œuvre:
Puis, à supprimer:
Cela dit, tenez compte des avertissements des intervenants au sujet de jouer avec d'autres ViewControllers points de Vue. Lire sur ViewController de confinement si vous voulez le faire.
viewWithTag:
= Beurk. Si vous avez besoin d'une poignée de vue, pourquoi ne pas simplement vous donner un bon sans patauger dans une hiérarchie vue en demandant à chaque vue pour un nombre arbitraire que n'importe qui peut accidentellement changement.Créer un ivar que soit vous donne une référence à la nouvelle viewController ou tout simplement de la vue. Je vais aller pour le viewController ici
Ajouter une propriété et en faire la synthèse
Maintenant, lorsque vous créez endroit de la ivar
Maintenant plus tard pour l'enlever
Note de côté
Il est généralement douloureux chemin à l'ajout d'une vue du contrôleur de vue à la vue de l'autre comme cela. Pour certains, la lecture de lumière sur ce sujet, voir Abuser De UIViewControllers
De nommage de
Location
est probablement pas excellente, il peut être plus approprié de parler de quelque chose commeLocationViewController
ou similaire. Sorte de nommage de cette façon permet à n'importe qui d'autre (ou le futur) à être en mesure de facilement lire et de comprendre que c'est un viewController, sans ouverture de l'en-tête.Vous pouvez simplement définir une balise unique à votre point de vue qui permet de l'identifier. Et puis, quand vous voulez le supprimer. Utiliser le
viewWithTag:(NSInteger)tag
méthode pour récupérer et supprimer lui seul.Et puis
objc_msgSend
vérifie que le premier? Je suis vraiment intéressé dans les sous-sols de ObjC.