2013-11-27 24 views
6

Sto usando 2 UIView per disegnare oggetti diversi in un file xib. È necessario cancellare la vista prima di disegnare nuovi oggetti per alcune azioni. Inizialmente, quando tipi di oggetti sono più piccoli di numero, ho utilizzato questo:Rimuovi tutti gli oggetti da un UIView

for (UILabel *btn in self.contentView.subviews) 
{    
    if([btn isKindOfClass:[UILabel class]]) 
    { 
     [btn removeFromSuperview]; 
    }   
} 

Ma quando ho più azioni e oggetti di più tipi devono essere disegnati per ogni azione, sembra male codifica di utilizzare questo tipo di metodo. C'è un metodo efficace per fare questo?

+1

'for (UIView * vista in yourView.subviews) {[vista removeFromSuperView]}' – Dinesh

+0

Perché ti senti, guarda male ** codifica per usare questo tipo **? –

risposta

15

È consigliabile utilizzare questa opzione per rimuovere tutte le sottoview, indipendentemente dalla loro classe.

[self.contentView.subviews makeObjectsPerformSelector: @selector(removeFromSuperview)]; 
+0

È possibile fornire la versione Swift per questo o devo usare: per subView in self.view.subviews { subView.removeFromSuperview() } –

0

usare questo per rimuovere tutti gli oggetti da un UIView

NSArray *arr=view.subviews; //Your Vies's object.subviews 

      for (UIView *view1 in arr) 
      { 
       [view1 removeFromSuperview]; 

      } 
Problemi correlati