Remova o subview uiImageView do UIScrollView
Pergunta
Olá, eu tenho um UIScrollView e tenho um objeto de UIImageView dentro do UIScrollView. Eu inicio o aplicativo. Em seguida, eu role para a direita no ScrollView e as mudanças do scrollView, mas não consigo ver o próximo objeto UiImageView que eu adiciono em - (void) scrollViewDidendDeCelerating: (UIScrollView *) scrollView. Antes de adicionar o próximo objeto, removo o anterior ... o que está errado?
Para remover o objeto que eu uso
UIImageView *l;
for (NSInteger ko=0; ko<[[scroll subviews] count]; ko++){
if ([[[scroll subviews] objectAtIndex:0] isKindOfClass:[UIImageView class]]){
//This code never gets hit
l=[[scroll subviews] objectAtIndex:0];
[l removeFromSuperview];
l=nil;
}
}
Então eu adiciono o próximo objeto
Scroll AddSubView: ImageView];
Eu removo o objeto anterior porque meu aplicativo trava quando adiciono 110 imagens no scrollView, então eu tenho que gerenciar a memória, eu acho. É por isso que removo o objeto anterior.
Qualquer pessoa ajuda, por favor!
Solução
Algumas sugestões para colocá -lo no caminho certo:
Se você acredita que a memória é um problema, participe o problema. Por exemplo, adicione/remova 10 imagens por vez.
A propriedade TAG de um UIView é sua melhor amiga ao tentar evitar manter problemas com seus próprios loops. Você pode definir uma tag específica para o seu UIImageViews quando precisar delas e, em seguida, procure a tag usando [uiview viewwithTag: tag]; Funciona recursivamente.
O ST3FAN traz um ponto muito bom sobre a modificação simultânea. Em geral, uma boa maneira de evitá -lo é adicionar a uma "matriz de exclusão" e depois remover oBjectSinary.
Outras dicas
O primeiro problema que vejo é que você está em uma matriz enquanto também a modifica. Também seu ko
O índice de loop não é usado em nenhum lugar. Você sempre pega o item 0.
A respeito:
NSArray* subviews = [[NSArray alloc] initWithArray: scroll.subviews];
for (UIView* view in subviews) {
if ([view isKindOfClass:[UIImageView class]]) {
[view removeFromSuperview];
}
}
[subviews release];
Não é exatamente isso que você está tentando fazer?