2011-12-18 96 views
9

我有兩個視圖viewA和viewB。我加載viewA頂視圖A與iOS刪除視圖

[self.view addSubview: viewB.view]; 

我不想刪除viewB,但我不怎麼做。我試過

[self.view removeFromSuperview]; 

但這不起作用。我怎樣才能做到這一點?

回答

19

致電-removeFromSuperviewviewB.view

+0

試了一下,這個應用程序崩潰:' - [viewB performSelector:withObject:withObject:]:發送到釋放實例消息0xf568d40' – McDermott 2011-12-18 20:26:43

+0

你可以發佈更多的代碼很難?知道什麼是g錯誤沒有更多的上下文。 – Sean 2011-12-18 21:12:53

+0

我發現,這次墜機事件與此無關。它現在完美運行。 – McDermott 2011-12-19 07:16:45

7

要從其超級視圖中移除viewB的視圖,您需要在該視圖上調用removeFromSuperview。

[viewB.view removeFromSuperview]; 

UIView class reference

removeFromSuperview 

從解除鏈接它的父和其窗口中的接收器,並刪除它 從響應鏈。

3

通過使用removeFromSuperView,您處於正確的軌道上。但是您需要將消息發送到您想要刪除的視圖。正如直到例如

[viewB.view removeFromSuperview]; 

但是,您可能沒有你想,如果你不使用屬性,刪除它,然後合成方法的時候有一個手柄viewB。我會使用@property和@synthesize。所以,你可以使用:

[self.viewB.view removeFromSuperview]; 

另一種方法是使用這樣的:(假設你的viewB.view是您添加到viewA.view

[[self.view.subviews objectAtIndex:(self.view.subviews.count - 1)]removeFromSuperview]; 

最後一個視圖您可以得到所有子視圖列表您viewA按:

NSLog(@"subviews of viewA.view: %@",self.view.subviews); 
+1

僅供參考,您可以調用'lastObject'來獲取數組的最後一個對象(而不是'self.view.subviews.count - 1)' – Rog 2011-12-18 19:11:58

+0

我學會了。偉大的信息! – user523234 2011-12-19 00:58:02

+0

我以編程的方式添加了很多東西,所以'removeFromSuperview'是我的選擇。 – McDermott 2011-12-19 07:19:08