Swift supprimer les sous-vues de superview
j'ai un scrollView, et j'ai ajouté un refreshcontroll à elle.
self.refreshControl = UIRefreshControl()
self.refreshControl.attributedTitle = NSAttributedString(string: "Frissítéshez húzzad! :)")
self.refreshControl.addTarget(self, action: "refresh:", forControlEvents: UIControlEvents.ValueChanged)
self.scrollView.addSubview(refreshControl)
dans la méthode refresh j'ai supprimer tous les sous-vues de la scrollview, puis remplir à nouveau la scrollview..
self.refreshControl = UIRefreshControl()
self.refreshControl.attributedTitle = NSAttributedString(string: "Frissítéshez húzzad! :)")
self.refreshControl.addTarget(self, action: "refresh:", forControlEvents: UIControlEvents.ValueChanged)
self.scrollView.addSubview(refreshControl)
après j'ai essayer de tirer, mon scrollview obtenir de nouvelles données, mais il ne l'a plus refreshcontroll. je pense que c'est parce que quand je la suppression des sous-vues de mon scrollview j'ai aussi supprimer le refreshcontroll d'elle. (si j'ajoute le refreshcontroll de nouveau dans ma méthode refresh mon scrollview aura refreshconroll de nouveau), Mais il y a un autre problème. Après l'actualisation de mon scrollview déplacement vers le bas.. j'ai joint à photos:
C'est comment j'ai supprimer le subiews:
func refresh(sender:AnyObject)
{
//remove all subviews from scrollview..
let subViews = self.scrollView.subviews
for subview in subViews{
println("for removing...")
subview.removeFromSuperview()
}
println("refresh called..")
UIApplication.sharedApplication().applicationIconBadgeNumber = 0
//remove all elements from the array
tstFrames.removeAll(keepCapacity: false)
//refresh data from webservice and adding it to tstFrames Array
wsServiceFeedTst()
//adding items to the scrollview from tstFramesArray
addPosts()
self.refreshControl.endRefreshing()
}
C'est comment le scrollview ressembler avant rafraîchissant:
Un c'est à quoi il ressemble après rafraîchissant:
quelqu'un pourrait-il m'aider à propos de pourquoi est-ce déplacement vers le bas?
Merci!
Merci, c'est la solution:
let subViews = self.scrollView.subviews
for subview in subViews{
println("for removing...")
if (subview is PostLineItem) {
subview.removeFromSuperview()
}
else {
println("not removing..")
}
}
- Pourriez-vous poster le code que vous utilisez pour enlever les sous-vues?
- Je demande, car vous risquez d'éliminer à la fois l'actualisation du contrôleur et des contraintes de mise en forme...
- merci!!!! vérifier mes mises à jour.. question est la mise en page, les contraintes des sous-vues? 🙂
Vous devez vous connecter pour publier un commentaire.
Par la suppression de tous les sous-vues, vous pouvez également supprimer des sous-vues autres que ceux explicitement ajoutés, comme l'actualisation de la vue et contraintes de mise en forme.
(Et pour répondre à votre question d'après les commentaires, contraintes de mise en forme peuvent être en réalité des sous-vues. J'explique comment faire pour supprimer tous les sous-vues à l'exception de contrainte de mise en page ici: https://stackoverflow.com/a/27281242/2274694.)
En général, je recommande de changer votre code pour être plus spécifique, tel que seul le point de vue que vous avez ajoutés sont supprimés. Par exemple, vous pourriez ajouter une balise à la sous-vues vous ajoutez dans votre
addPosts
méthode:supprimez uniquement les sous-vues avec cette balise dans
refresh:
:pour vous assurer de ne pas supprimer tout les sous-vues vous n'avez pas explicitement ajouté vous-même.
Edit: Il s'avère que l'OP est ajouté des sous-vues sont toutes de type personnalisé
PostLineItem
si les balises sont inutiles puisque l'on peut tout simplement supprimer tous lesPostLineItem
s à la place:PostLineItem
.view.removeFromSuperview()
et il n'a pas de travail! Enfin, j'ai juste répété de tous les points de vue sur la fenêtre des sous-vues, a trouvé la balise que j'avais mis et enlevé.Je suis tombé sur ce problème aujourd'hui et aimerais partager ma solution. Vous pouvez supprimer tous les sous-vues d'un point de vue (et de leurs sous-vues) avec la suite de UIView extension rapide. En plus j'ai attaché une solution pour éliminer toutes les contraintes de la même manière.
La première solution est de garder toutes les contraintes, voir Lyndseys réponse. Sachez que cette solution supprime l'ensemble de la hiérarchie en dessous de la UIView. Si vous souhaitez supprimer des sous-vues d'échange ou de s'étendre comme ceci: