Saluti tutti,xcode Rimozione di alcune sottoview dalla vista
Sono un noob e ho cercato di lavorare su questo per alcuni giorni.
Sto aggiungendo immagini a una vista tramite UItouch. La vista contiene uno sfondo in cima al quale vengono aggiunte le nuove immagini. Come faccio a cancellare le immagini che aggiungo dalla sottoview, senza eliminare la UIImage che è lo sfondo. Qualsiasi assistenza è molto apprezzata. Grazie in anticipo.
ecco il codice:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *) event {
NSUInteger numTaps = [[touches anyObject] tapCount];
if (numTaps==2) {
imageCounter.text [email protected]"two taps registered";
//__ remove images
UIView* subview;
while ((subview = [[self.view subviews] lastObject]) != nil)
[subview removeFromSuperview];
return;
}else {
UITouch *touch = [touches anyObject];
CGPoint touchPoint = [touch locationInView:self.view];
CGRect myImageRect = CGRectMake((touchPoint.x -40), (touchPoint.y -45), 80.0f, 90.0f);
UIImageView *myImage = [[UIImageView alloc] initWithFrame:myImageRect];
[myImage setImage:[UIImage imageNamed:@"pg6_dog_button.png"]];
myImage.opaque = YES; // explicitly opaque for performance
[self.view addSubview:myImage];
[myImage release];
[imagesArray addObject:myImage];
NSNumber *arrayCount =[self.view.subviews count];
viewArrayCount.text =[NSString stringWithFormat:@"%d",arrayCount];
imageCount=imageCount++;
imageCounter.text =[NSString stringWithFormat:@"%d",imageCount];
}
}
Risposta 1 è generalmente corretto, ma noti che è possibile restringere la ricerca utilizzando [UIView viewWithTag: 7] e non dover scorrere tutte le singole viste. Naturalmente, questo potrebbe non salvarti nulla, ma è una cosa bella sapere – justin
Ragazzi, grazie mille per il vostro contributo. Ci proverò oggi. Ho fatto un lungo lavoro attorno al quale era necessario aggiungere lo sfondo dopo che tutto era stato cancellato. Non esattamente elegante ma ha funzionato .. –
La tua soluzione è molto intelligente, anche se potrebbe non funzionare così bene quando hai bisogno di un maggiore controllo sulle tue visualizzazioni. Se provi ad usare 'viewWithTag:', come suggerito da @justin, tieni presente che restituirà solo la prima vista trovata con un tag corrispondente. È un metodo molto conveniente quando c'è una sola vista di questo tipo. Se hai molte visualizzazioni con tag corrispondenti, finirai con il iterare per trovarli tutti. Suggerimento extra: le viste hanno un valore di tag predefinito pari a zero, quindi evita di utilizzare zero come valore di tag identificativo. –