UIView Ад. Скрытие одного подпредставления скрывает их всех - PullRequest
1 голос
/ 04 октября 2009

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

Вот сделка. Действительно, очень просто. У меня есть контейнерное представление с N-узлами дочерних узлов. Никаких хитростей здесь, очень просто. Я делаю следующее:

// 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)

Довольно прирученные вещи. К сожалению, ВСЕ братские взгляды исчезают! Что за?!? Как это возможно?

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

Расстроенный, Дуг

Ответы [ 3 ]

4 голосов
/ 05 октября 2009

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

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

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

1 голос
/ 05 октября 2009

Очевидно, что все ваши представления включены в occludedPageSet, или все ваши теги одинаковы.

NSNumber *n in occludedPageSet

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

0 голосов
/ 05 октября 2009

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

...