1

我显然处于一些旋转的 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 的 [retain]/[release] 吗?我难住了。

困惑,道格

4

3 回答 3

4

我在这里遗漏了一些关于这个问题的东西吗?很自然,如果您隐藏一个视图,它作为子视图保存的任何视图也将被隐藏。毕竟,你看不到容器视图......

如果你把十个东西放在一个盒子里,让盒子看不见,你会不会认为这意味着你看不到盒子里的东西?同样,如果只有斗篷是隐形的,而不是下面的人,那么隐形斗篷也没什么用......

如果您需要一些可见的东西而不是一些不可见的东西,请处理特定项目而不是容器。

于 2009-10-05T08:17:57.840 回答
1

显然,您的所有视图都包含在 occludedPageSet 中,或者您的所有标签都是相同的 n。

NSNumber *n in occludedPageSet

或者,其中一个 v 视图是其余视图的父级,因此当您隐藏它时,您会将它们全部隐藏。

于 2009-10-05T00:48:08.230 回答
0

确保 self.containerView 的标签与任何孩子的标签完全不同。如果它是给定的标签,调用 viewWithTag 将返回接收者,这反过来会隐藏你的所有视图。要么逐步完成迭代,要么打印出 v 指向的地址,这样你就知道你正在遮挡你应该遮挡的东西。

于 2009-10-05T04:06:19.673 回答