2009-10-04 70 views
1

我显然是在一些旋转的UIView地狱区,在那个时候,向下是兄弟姐妹是父母,我的大脑完全被炸。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) 

很驯服的东西。不幸的是,所有兄弟姐妹的意见消失了!什么?!?这怎么可能?

我在这里需要[保留]/[释放]。我很难过。

莫名其妙, 道格

+0

确定的意见,即藏身时,他们不应该不子视图,而不是兄弟姐妹? – rpetrich 2009-10-04 20:05:55

回答

1

显然,所有的意见都包含在occludedPageSet,或您的所有代码都是相同的N。

NSNumber *n in occludedPageSet 

或者,其中一个v视图是其余的父视图,所以当你隐藏它时,你将它们全部隐藏起来。

0

确保self.containerView的标签与任何儿童标签完全不同。调用viewWithTag将返回接收者,如果它是给定的标签,这将依次隐藏所有的视图。或者逐步进行迭代,或者打印出v指向的地址,以便知道您正在遮挡您应该遮挡的内容。

4

我失去了一些关于这里的问题?隐藏一个视图是很自然的,它作为一个子视图持有的任何视图也将被隐藏。毕竟,你不能看到容器视图...

如果你把十件事情在一个盒子里,使箱子看不见的,你不会想到,意味着你不能看到在箱子的东西?同样的,如果只有斗篷是看不见的,而不是在下面的人,那么隐形斗篷几乎没有用处......

如果你需要一些可见的东西,而有些则不是,对特定物品而不是容器进行处理。