2013-02-21 106 views
3

我想刪除從一個UIWindow視圖,所以我的appdelegate方法的NSLog,它說,窗口的子視圖數爲兩個NSLog(@" %d",[[self.window subviews] count]);所以我怎樣才能刪除從窗口子視圖,如果我刪除子視圖我必須繼續標籤欄控制器。 ...刪除uiwindow的子視圖?

- (void) GetUserCompleted 

{ 
    NSLog(@" %@",[[self.window subviews] objectAtIndex:0]); 
    NSLog(@" %@",[[self.window subviews] objectAtIndex:1]); 
} 
+0

我不明白你所說的「是什麼意思,如果我刪除該子視圖我有標籤欄控制器將繼續......「? – trojanfoe 2013-02-21 08:07:08

+0

@trojanfoe我temporarliy調用一個視圖控制器,然後我想刪除這個觀點......如果我刪除觀,我有標籤欄控制器的後面...... – 2013-02-21 08:14:29

+0

你會希望有一個內容視圖在任何時候都顯示,所以這聽起來適合我嗎?如果您使用的是標籤欄控制器,那麼你將顯示任何觀點是標籤欄控制器選擇,爲什麼你會刪除任何看法呢? – trojanfoe 2013-02-21 08:15:59

回答

14

您可以使用以下代碼刪除單個子視圖。

[subview_Name removeFromSuperview]; 
如果你想刪除所有子視圖

形成的觀點,然後用這個。

NSArray *subViewArray = [self.window subviews]; 
for (id obj in subViewArray) 
{ 
    [obj removeFromSuperview]; 
} 
+0

感謝üvinu !!!!我有一些想法!但它會刪除所有的對象!我想刪除某個特定的UIView?我哪有? – 2013-02-21 08:21:15

+0

會發生什麼,與這些意見相關的視圖控制器?這可能會刪除該視圖,但我認爲OP是誤解了某些內容。 – trojanfoe 2013-02-21 08:23:22

8

希望下面的代碼將是有益的刪除特定視圖

Set tag for that remove view 

    subview.tag = 1; 

    then 

    [[[self window] viewWithTag:1] removeFromSuperview]; 
+0

很好的回答!這對我工作:) – 2017-08-05 21:52:19

+0

沒有已知的類選擇器'窗口'的方法 – 2018-01-10 06:49:53

+0

@ShahbazAkram你可以[UIApplication sharedApplication] .keyWindow在Objective C中。對於swift,你可以使用UIApplication.shared.keyWindow [keywindow](https:/ /developer.apple.com/documentation/uikit/uiapplication/1622924-keywindow) '本屬性窗口數組,它是最近發出的makeKeyAndVisible在一個UIWindow對象()message.' – Maddy 2018-01-11 06:40:54

1

斯威夫特版本@Maddy的答案:

//create view then add a tag to it. The tag references the view 
var myNewView = UIView() 
myNewView.tag = 100 

//add the view you just created to the window 
window.addSubview(myNewView) 

//remove the view you just created from the window. Use the same tag reference 
window.viewWithTag(100)?.removeFromSuperview 
+0

真的很有趣,這種解決方案對我的作品,但我仍然不明白爲什麼只調用myNewView。 removeFromSuperview()不起作用?有任何想法嗎? – 2018-02-21 12:30:28

+0

我也不確定。我會在我花點時間看看並回復你。你總是可以把它作爲一個新的問題發佈! – 2018-02-21 21:25:08