Попробуйте это:
UIView *v = [self.containerView viewWithTag:[n integerValue]];
v.hidden = YES;
[self.containerView bringSubviewToFront:v];
[v removeFromSuperview];
Еще одна вещь, которую я только что заметил из документа класса UIView - см. Последнее предложение:
removeFromSuperview
Отсоединяет получателя от его суперпредставления и его окна и удаляет его из цепочки респондента.
- (аннулируются) removeFromSuperview
Обсуждение
Если супервизор получателя не ноль, этот метод освобождает получателя. Если вы планируете повторно использовать представление, обязательно сохраните его перед вызовом этого метода и обязательно отмените его, когда вы закончите с ним или после добавления его в другую иерархию представления.
Никогда не вызывайте этот метод при отображении.
ОБНОВЛЕНИЕ: сейчас 2014 год, и удаление подпредставления без его скрытия работает отлично. Оригинальный код плаката должен работать как есть:
UIView *v = [self.containerView viewWithTag:[n integerValue]];
[v removeFromSuperview];
Это приведет к удалению v и любых представлений, которые он прикрепил к нему как подпредставления, оставляя позади ContainerView и любые родственные элементы v.