NSMutableArray удалить объект 1 перед последним объектом

У меня есть много UIImageView в NSMuatableArray, и мне нужно удалить определенный UIImageView из представления, но я думаю, что если я отпущу UIImageView, он все равно будет в массиве.

Я не хочу этого, но есть небольшая проблема. UIImageView, который мне нужно удалить, — это ровно 1 объект перед последним объектом в массиве, поэтому я не могу использовать removeLastObject. Я знаю номер тега, но я не могу написать его так, потому что я бы изменил массив при его использовании.

for (UIImageView *k in array1) {
    if (k.tag==tagzahl-1) {
       if (x==1){
          [k removeFromSuperview];
          [array1 remove object:k];
       }
    }
}

Я использую: [array1 addObject:myimage]; для добавления UIImageView в массив, поэтому я не знаю индекс.


person killerwakka    schedule 11.02.2013    source источник
comment
проблема в том, что вы не можете удалить объект из NSArray, повторяя его таким образом. если вы хотите сохранить цикл как есть, вам следует сохранить указатель на объект, который вы хотите удалить, и удалить его после завершения итерации.. хотя лучшим подходом было бы вообще не перебирать их и получить немедленную ссылку на Это. Ответы Paul.s и trojanfoe делают именно это двумя разными способами.   -  person David Ben Ari    schedule 11.02.2013


Ответы (1)


Если вы знаете этот тег, который вы говорите, что знаете, тогда

UIView *view = [viewContainingImageView viewWithTag:tagzahl-1];
[view removeFromSuperview];
[array1 removeObject:view];
person Paul.s    schedule 11.02.2013
comment
нет функции, называемой viewContainingImageView viewWithTag: - person killerwakka; 11.02.2013
comment
Нет, это должно быть заменено указателем на представление, которое фактически содержит представление изображения. - person Paul.s; 11.02.2013