2010-06-23 52 views
1

在appdidfinishlaunch我加載一個tabbarcontroller作爲子視圖和IM之後加載其他視圖iPhone:從子視圖力本身除去

MySubView * mySubView = [[MySubView alloc] init]; 
[window addSubview:mySubView]; 
[mySubView release]; 

我要關閉頂層與在子視圖buttonclick,所以我建立了一個IBAction爲,並試圖指出錯誤的事情,迫使實際視圖關閉:

// 1. 
[self.view removeFromSuperview]; 

// 2. 
id *delegate = [[UIApplication sharedApplication] delegate]; 
[[[delegate view] objectAtIndex:0] removeFromSuperview]; 


//3. 
[[[delegate window] view] removeFromSuperview]; 

因此,如何能我彈出窗口,從該子視圖?

歡呼 西蒙

回答

6

你可以做幾件事情。一種方法是,以一個獨特的標籤分配給視圖,然後再使用該標籤得到它,所以:

MySubView* mySubView = [[MySubView alloc] init]; 
[mySubView setTag:100]; 
[window addSubview:mySubView]; 
[mySubView release]; 

// later 

[[[delegate window] viewWithTag:100] removeFromSuperview]; 

另一種是通過窗口的子視圖迭代,直到你找到一個你的獨特的類的實例,然後刪除它。所以:

MySubView* mySubView = nil; 
for(UIView* view in [[delegate window] subviews]) { 
    if([view isKindOfClass:[MySubView class]]) { 
    mySubView = (MySubView*)view; 
    break; 
    } 
} 
[mySubView removeFromSuperview]; 
+0

我得到的概念,並嘗試這兩種變化,但我只得到錯誤。主要是:無法識別的選擇器發送到實例。我也改變了[window addSubview:infostartView.view]; – 2010-06-23 15:10:32

+0

@Simon:你必須發佈更多的代碼或更多地描述問題。如果您按上述方式進行了設置,則不會出現任何錯誤。我不知道什麼是infostartView實例,因爲你沒有提供任何這樣的上下文。 – 2010-06-23 20:52:49