在我的應用程序中,我嘗試將子視圖放到前面,稍後將其放回原始圖層位置。該代碼應該是很簡單的:重新排序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