在我的应用程序中,我尝试将子视图放到前面,稍后将其放回原始图层位置。该代码应该是很简单的:重新排序UIView子视图
为了使子视图前(我的自定义UIView类中):
[self.superview bringSubviewToFront:self];
容易。我将原始的z位置存储在一个实例变量中,这个实例变量叫做zPosition
。所以,-bringSubviewToFront:
前行是:
zPosition = [self.superview.subviews indexOfObject:self];
真是如此,我用它来把我的子视图前面的代码是:
zPosition = [self.superview.subviews indexOfObject:self];
[self.superview bringSubviewToFront:self];
这工作,因为它应该。问题是当我试图把子视图放回原来的位置时。我只是这样做:
[self.superview exchangeSubviewAtIndex:zPosition withSubviewAtIndex:
[self.superview.subviews indexOfObject:self]];
使用此代码,如果我有两个子视图,这是发生了什么:
比方说,我有一个观点,并查看B.查看A是上述观点B.我点击视图B,它来到前面。我再次点击视图B(它应该回到原来的位置),并且没有任何反应,所以它现在处于视图A中。如果我现在点击视图A,它会到达前面,但是当我再次点击它时(所以它应该回到原来的z位置:在视图B)下面,所有的兄弟姐妹视图都消失了!
有没有人看到有什么可能导致这个问题?
也许你可以用假的,空的子视图顶部开始。然后你与那个子视图来回切换。不是最优雅的,我知道...... – 2012-07-18 21:13:23