Dal UIStackView Class ReferenceUIStackView: è veramente necessario chiamare sia removeFromSuperView che removeArrangedSubview per rimuovere una sottoview?
In removeArrangedSubview:
Per impedire la vista di apparire sullo schermo dopo aver chiamato removeArrangedSubview dello stack: il metodo, rimuovere esplicitamente la vista dalla matrice subviews chiamando il metodo removeFromSuperview della vista.
In arrangedSubview:
Ogni volta che il metodo removeFromSuperview di una vista organizzato è chiamato, la vista pila rimuove la vista dalla sua gamma arrangedSubview
Da questi, sembra che chiamare semplicemente removeFromSuperview è abbastanza per rimuovere una sottoview e l'ho usata in quel modo senza problemi. Ho anche confermato il comportamento registrando il conteggio dell'array arrangedSubviews quando viene chiamato removeFromSuperview.
Un sacco di tutorial e commenti qui su S/O tuttavia, dite di chiamare entrambi. C'è una ragione per questo? O le persone lo fanno solo perché la documentazione lo dice?
Non è una risposta adeguata per te, ma un aneddoto: stavo chiamando 'removeArrangedSubview' senza sapere che dovevo chiamare' removeFromSuperview', e in effetti stava cancellando la vista da 'arrangedSubviews' ma la vista stava ancora apparendo in 'sottoview' causando ogni tipo di rottura confusa. L'aggiunta della chiamata 'removeFromSuperview' (una volta che ho visto questa domanda!) L'ha risolta. – aehlke
Non conosco la risposta, neanche. Ma stavo avendo un problema in cui tutte le mie sottoview non venivano rimosse dopo aver usato RemoveArrangedSubview. Dopo aver visto questo post, ho aggiunto le chiamate removeFromSuperview e ora funziona come previsto. –
La documentazione sembra suggerire che è sufficiente chiamare 'removeFromSuperview'. Sto solo chiamando 'removeFromSuperview' senza problemi. –