2011-12-18 18 views
9

Ho due viste, vistaA e vistaB. Mi carico viewB in cima viewA conVista rimozione iOS

[self.view addSubview: viewB.view]; 

ho wan't per rimuovere viewB, ma non come farlo. Ho provato

[self.view removeFromSuperview]; 

ma questo non funziona. Come posso fare questo?

risposta

19

Chiama -removeFromSuperview su viewB.view.

+0

provato, applicazione si blocca con questo: '- [viewB performSelector: withObject: withObject:]: messaggio inviato ad esempio deallocato 0xf568d40' – McDermott

+0

potete inserire più del vostro codice è difficile? sai cos'è g o sbagliato senza più contesto. – Sean

+0

Ho scoperto che il crash non era correlato a quello. Funziona perfettamente ora. – McDermott

7

Per rimuovere viewB's view dalla sua superview, è necessario chiamare removeFromSuperview su tale vista.

[viewB.view removeFromSuperview]; 

dal UIView class reference.

removeFromSuperview 

scollega il ricevitore dalla sua superview e la sua finestra, e lo rimuove dalla catena responder.

3

Sei sulla strada giusta utilizzando removeFromSuperView. Ma è necessario inviare il messaggio alla vista che si desidera rimuovere. Proprio come Fino esempio

[viewB.view removeFromSuperview]; 

Tuttavia, si potrebbe non avere una maniglia per viewB con il tempo che si desidera rimuovere, se non si utilizza il metodo di proprietà e sintetizzare. Vorrei usare @property e @synthesize. Così si può utilizzare:

[self.viewB.view removeFromSuperview]; 

Un altro modo è di utilizzare questo: (supponendo che il vostro viewB.view è l'ultima vista aggiunto alla viewA.view

[[self.view.subviews objectAtIndex:(self.view.subviews.count - 1)]removeFromSuperview]; 

È possibile ottenere un elenco di tutti subviews del vostro viewA da:

NSLog(@"subviews of viewA.view: %@",self.view.subviews); 
+1

Per tua informazione puoi chiamare 'lastObject' per ottenere l'ultimo oggetto di un array (invece di' self.view.subviews.count - 1) ' – Rog

+0

Ho imparato mentre procedo. Grandi informazioni! – user523234

+0

Aggiungo molte cose a livello di codice, quindi 'removeFromSuperview 'è la mia scelta. – McDermott

Problemi correlati