2008-12-17 23 views
3

如果我有其在3層對應的功能,即定義了3周不同的觀點:如何確定當前視圖這是對顯示

- (UIView *)getView1 { /*...*/ } 
- (UIView *)getView2 { /*...*/ } 
- (UIView *)getView3 { /*...*/ } 

這些是必需的特定視圖當加入到self.view

我的問題是,我們如何知道當前正在顯示哪些視圖?是否有一個參數可以識別哪個視圖是當前視圖?

+0

如何將視圖添加到self.view?你使用[self.view addSubview:...],如果是這樣,你是否先刪除現有的子視圖?多一點信息會有所幫助。 – 2008-12-17 18:39:43

回答

5

您可標記每個視圖與的整數,並且後來讀取標籤,以確定哪些圖是活性(假設要更換self.view)。

#define TAG_VIEW_1 1 
#define TAG_VIEW_2 2 
#define TAG_VIEW_3 3 
... 
[ [self getView1()] setTag:TAG_VIEW_1 ]; 
[ [self getView2()] setTag:TAG_VIEW_2 ]; 
[ [self getView3()] setTag:TAG_VIEW_3 ]; 
...  

if (self.view.tag == TAG_VIEW_1) { 
    // do something 
} 
else if (self.view.tag == TAG_VIEW_2) { 
    // etc 
} 
... 
3

假設當改變他們可以使用[自上海華],以確定哪一個是當前顯示的要刪除從self.view其它兩個視圖。

1

所有的UIView的時候都被顯示在一個窗口它,當它被刪除設置爲nil被設置一個window property。你可以在窗口屬性的值,看看是否正在顯示在窗口中的視圖:

BOOL isDisplayed = self.view.window != nil; 

您還可以覆蓋willMoveToWindow:中的UIView的子類,每當視圖添加到它會被稱爲或從窗口中移除。

相關問題