2011-09-30 14 views
20

Non so se è possibile, ma quello che vorrei fare è aggiungere una vista secondaria più volte alla vista. Ho provato qualcosa di simile:Aggiungere la stessa sottoview più volte per visualizzare

[self.view addSubview: newView]; 
newView.center = CGPointMake(160, 100); 
[self.view addSubview: newView]; 
newView.center = CGPointMake(160, 200); 
[self.view addSubview: newView]; 

Tutto questo non fa altro che spostare newView intorno, senza l'aggiunta di nuovi. Qualche idea?

Ho anche provato questo:

[self.view addSubview:newView]; 
UIView *anotherView = newView; 
anotherView.center = CGPointMake(160, 100) 
[self.view addSubview:anotherView]; 

Modifica

Ecco una soluzione che ho imparato con il tempo

Un altro modo per risolvere il problema sarebbe quello di fare un separato pennino contenente la vista e aggiungere istanze del pennino diverse volte. Un buon modello da utilizzare per implementare questa soluzione è farlo nello stesso modo in cui un metodo personalizzato UITableViewCell viene utilizzato nel metodo cellForRowAtIndexPath.

+0

Grazie per la presentazione di questa domanda. Questo ha indirettamente risposto a uno dei miei! Tempo risparmiato! Woohoo! –

risposta

39

Una vista può essere contenuta solo nella gerarchia di una vista genitore singola. Non appena lo aggiungi a uno nuovo, viene rimosso dal precedente. In questo caso, viene rimosso e aggiunto alla stessa gerarchia della vista. Dovresti creare una copia della sottoview per farla apparire più volte.

+0

Ho appena provato il tuo suggerimento (credo) e modificato il mio post. – coder

+1

Si sta semplicemente creando un nuovo puntatore allo stesso oggetto UIView. Poiché le UIViews non rispondono alla copia, dovrai effettivamente allocare e avviare un nuovo UIView e personalizzarlo in modo che corrisponda al primo. Questo può aiutare in questo senso: http://stackoverflow.com/questions/4425939/uiview-can-not-be-copy. –

Problemi correlati