UIStackView : Ist es wirklich notwendig, rufen beide removeFromSuperView und removeArrangedSubview zu entfernen, eine Untersicht?
Aus der UIStackView Klasse Referenz
In removeArrangedSubview:
Um zu verhindern, dass die anzeigen erscheinen auf dem Bildschirm nach dem Aufruf der stack ist removeArrangedSubview: Methode, explizit entfernen Sie die Ansicht aus der Untersichten array durch aufrufen der Ansicht removeFromSuperview Methode.
In arrangedSubview:
Wenn eine geordnete Ansicht removeFromSuperview Methode aufgerufen wird, wird der stack-Ansicht entfernt der Blick vom arrangedSubview array
Von diesen, es scheint, dass der Aufruf nur removeFromSuperview ist genug, um zu entfernen, eine Untersicht und ich habe es so, ohne Probleme. Ich habe auch bestätigt das Verhalten, indem Sie die Anzahl der arrangedSubviews array, wenn removeFromSuperview genannt wird.
Eine Menge tutorials, und Kommentare hier auf S/O, jedoch, sagen, rufen beide. Gibt es einen Grund für dieses? Oder machen die Leute tun es einfach, weil die Dokumentation so sagt?
- Nicht eine richtige Antwort für Sie, aber eine Anekdote: ich war nur aufrufen
removeArrangedSubview
ohne zu wissen, sollte ich eigentlich auch nennenremoveFromSuperview
, und es war in der Tat clearing der Blick vonarrangedSubviews
aber der Blick war immer noch erscheinen insubviews
verursacht alle Arten von verwirrenden Bruch. Hinzufügen derremoveFromSuperview
Anruf (einmal sah ich diese Frage!) gelöst. - Ich weiß nicht die Antwort entweder. Aber ich hatte ein Problem, wo alle meine Untersichten wurden nicht entfernt, nachdem mit RemoveArrangedSubview. Nach der Besichtigung dieser Beitrag, habe ich noch removeFromSuperview Anrufe und jetzt funktioniert es wie erwartet.
- Die Dokumentation scheint zu suggerieren, Sie müssen nur anrufen
removeFromSuperview
. Ich bin nur aufrufenremoveFromSuperview
ohne Probleme. - Scheint es ein problem mit IOS12 einfach mitgehen removeArrangedSubview. Es ist nicht die Beseitigung der Sicht richtig. Ruft einfach removeFromSuperview funktioniert.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht, rufen Sie einfach
subview.removeFromSuperView()
removeFromSuperView()
scheint zu funktionieren, aber kann die Ursache für seltsame stürzt ab, wenn Sie hinzufügen und entfernen eine Menge von Ansichten. Wenn Sie Lesen, die Diskussion ist Teil der docs ist es ziemlich klar, Sie müssen rufen Sie beide.removeFromSuperview()
nur. Ich werde die Freigabe ein update in Kürze, welches zudem auch nochremoveArrangedSubview()
und Bericht zu erstatten, ob dies behebt es!In iOS 12.0, müssen Sie
Wenn Sie
removeArrangedSubview
gibt es einen bug, wo die Ansicht am angegebenen index entfernt, aber die Aussicht, die ich löschen möchten, erscheint amCGPoint(x: 0, y: 0)
.Hoffe, dies hilft jemand.
Hacking Mit Swift bietet ein ziemlich gutes Beispiel und Erklärung, mit Web-Ansichten in diesem Fall.
https://www.hackingwithswift.com/read/31/4/removing-views-from-a-uistackview-with-removearrangedsubview
Du hast Recht, nur der Aufruf
removeFromSuperview
ist ausreichend, um die Sicht komplett entfernt.Ich vermute, der Grund für die Menschen, setzen beide ist, denn Sie laufen über die
removeArrangedSubview
Dokumentation, welche scheint zu sagen, beide sind notwendig. (Und in der Tat, Sie sind, wenn Sie anrufenremoveArrangedSubview
und wollen, dass die anzeigen wirklich Weg.)Den zusätzlichen doc in
arrangedSubviews
nicht gesehen, die durch so viele, so dass Sie nicht erkennenremoveArrangedSubview
ist in diesem Fall optional.removeFromSuperview()
wird nicht empfohlen.Entfernen arrangedSubview von einem stackview ist