Prova questo:
UIView *v = [self.containerView viewWithTag:[n integerValue]];
v.hidden = YES;
[self.containerView bringSubviewToFront:v];
[v removeFromSuperview];
Un'altra cosa che ho appena notato dal documento di classe UIView - vedi l'ultima frase:
removeFromSuperview scollega il ricevitore dalla sua superview e la sua finestra, e lo rimuove dalla la catena di risposta.
- (void) removeFromSuperview
Discussione Se superview del ricevitore non è pari a zero, questo metodo rilascia il ricevitore. Se si prevede di riutilizzare la vista, assicurarsi di conservarla prima di chiamare questo metodo e assicurarsi di rilasciarla come appropriato al termine dell'operazione o dopo averla aggiunta a un'altra gerarchia di viste.
Non invocare mai questo metodo durante la visualizzazione.
AGGIORNAMENTO: Ora è 2014 e rimuovere una sottoview senza nasconderlo funziona perfettamente bene. Il codice del manifesto originale dovrebbe funzionare così com'è:
UIView *v = [self.containerView viewWithTag:[n integerValue]];
[v removeFromSuperview];
Questo eliminerà v ed eventuali pareri si è collegato ad esso come subviews, lasciando dietro di sé containerView ed eventuali fratelli di v.
** minaccioso ** Non invocare questo metodo durante la visualizzazione. – Irwin
non potrebbe essere più facile, fallo come dice Blackberry per (UIView * s in [visualizza sottoview]) [s removeFromSuperview]; ** – Fattie
Indietro nel '09, se hai rimosso una sottoview prima di nasconderla, hai alcuni risultati strani. O almeno questo è quello che stavo vedendo, così come il poster originale. E c'era un avvertimento nel riferimento alla classe UIView, che è stato sostituito con un altro. Direi che il metodo del poster originale di rimuovere una sottoview è probabilmente corretto e non richiede alcun codice aggiuntivo. (sta solo rimuovendo una sottoview singola) – mahboudz