Aus der UIStackView-Klassenreferenz
In removeArrangedSubview:
Um zu verhindern, dass die Ansicht nach dem Aufrufen der Methode removeArrangedSubview: des Stapels auf dem Bildschirm angezeigt wird, entfernen Sie die Ansicht explizit aus dem Array subviews, indem Sie die Methode removeFromSuperview der Ansicht aufrufen.
In arrangierter Unteransicht:
Immer wenn die removeFromSuperview-Methode einer angeordneten Ansicht aufgerufen wird, entfernt die Stapelansicht die Ansicht aus ihrem arrangierten Subview-Array
Von diesen scheint es, dass das Aufrufen von removeFromSuperview ausreicht, um eine Unteransicht zu entfernen, und ich habe sie ohne Probleme so verwendet. Ich habe das Verhalten auch bestätigt, indem ich die Anzahl der arrangierten Subviews-Arrays protokolliert habe, wenn removeFromSuperview aufgerufen wird.
Viele Tutorials und Kommentare hier zu S / O sagen jedoch, beide anzurufen. Gibt es einen Grund dafür? Oder machen die Leute das einfach, weil es in der Dokumentation steht?
removeArrangedSubviewohne zu wissen , dass ich auch anrufen sollteremoveFromSuperview, und es hat zwar die Sicht geklärt,arrangedSubviewsaber die Sicht hat immer nochsubviewsalle Arten von verwirrendem Bruch verursacht. Durch Hinzufügen desremoveFromSuperviewAnrufs (sobald ich diese Frage gesehen habe!) Wurde das Problem behoben.