2009-10-04 2 views
1

Я, по-видимому, в какой-то закрученной зоне адмирала UIView в тот момент, когда вверх вниз, брат, является родителем, а мой мозг полностью обжарен.UIView Hell. Скрытие одного подсмотра скрывает их всех

Это сделка. Действительно, очень просто. У меня есть вид контейнера с надзорами sibling N leaf node. Здесь нет трюков, мертвых просто. Я делаю следующее:

// occludedPageSet - это набор тегов представления, соответствующих представлениям, которые находятся за пределами экрана, и // таким образом полностью закрыты. Это было определено геометрически.

for (NSNumber *n in occludedPageSet) { 

      // Point to a view corresponding to this tage 
    UIView *v = [self.containerView viewWithTag:[n integerValue]]; 

      // Hide this view 
    if (v.hidden == NO) { 

        NSLog(@"View %d is occluded. Hide it.", [n integerValue]); 
     v.hidden = YES; 

    } // if (v.hidden == NO) 


} // for (occludedPageSet) 

Pretty tame stuff. К сожалению, все взгляды братьев и сестер исчезают! Что за?!? Как это возможно?

Нужно ли [сохранить]/[выпуск] для v здесь. Я в тупике.

Расстроенные, Doug

+0

Вы уверены, что взгляды, которые скрываются, когда они не должны, не являются подчиненными, а не братьями и сестрами? – rpetrich

ответ

1

По-видимому, все представления включены в occludedPageSet, или все теги являются одинаковым п.

NSNumber *n in occludedPageSet 

Или один из видов v является родителем остальных, поэтому, когда вы его скрываете, вы их спрячете.

0

Убедитесь, что тег self.containerView является чем-то совершенно отличным от любого из тегов для детей. Вызов viewWithTag вернет ресивер, если он является указанным тегом, который, в свою очередь, скроет все ваши представления. Пройдите через итерацию или распечатайте адрес, на который указывает v, чтобы вы знали, что вы закрываете то, что вы должны закрывать.

4

Я пропустил что-то о проблеме здесь? Естественно, что если вы скрываете представление, любое представление, которое оно удерживает как подпункт, также будет скрыто. В конце концов, вы не видите вид контейнера ...

Если вы положите десять вещей в коробку и сделаете окно невидимым, разве вы не ожидаете, что это означает, что вы не можете видеть вещи в коробке ? Подобным образом плащ невидимости был бы малопригодным, если бы только плащ был невидим, а не человек ниже ...

Если вам нужны некоторые видимые вещи, а некоторые нет, работайте над конкретными предметами, а не с контейнером.

Смежные вопросы