[英]Remove current view from superview
假設我有一個視圖控制器“ViewBViewController”。 在那個視圖控制器中,我創建了一個“ViewAViewController”的實例並使用 addSubView: 方法來顯示這個 ViewAViewController。 然后它處理一堆信息,現在完成了。 我希望它在完成后自動作為子視圖刪除。
我正在查看 removeFromSuperview 方法,但似乎無法從我要刪除其視圖的視圖控制器中調用它(我的第一直覺是 [self.view removeFromSuperview],但這擺脫了整個視圖,而不是只是我追求的子視圖)。
我能想到的唯一方法是設置一個委托協議,並讓視圖 B 代表視圖 A 作為其委托來處理視圖 A 的卸載。 然而,這種方法似乎有點矯枉過正。 我錯過了一個更簡單的解決方案嗎?
提前致謝!
UIViewController
沒有響應removeFromSuperview
,因為UIViewController
不是UIView
而是UIViewController
那里沒有驚喜。 您可以在任何視圖上調用removeSuperview
,例如與視圖 controller 關聯的視圖(此處為self
):
[self.view removeFromSuperview];
或者如果您只想刪除一個子視圖:
[mySubview removeFromSuperview];
或者如果您的子視圖是self
的成員(即在界面中聲明):
[self.mySubview removeFromSuperview];
您是否嘗試過: setHidden: YES
?
這里有兩個基本正確的解決方案:
使用導航 controller。 如果您不希望它成為界面的一部分,您可以隱藏導航欄。 然后,您可以通過調用處理頂視圖 controller 及其從任一視圖 controller 的視圖
// argument can be YES or NO, as you like [self.navigationController popViewControllerAnimated:YES];
使用委托調用告訴父視圖 controller 執行類似的操作
-(void)removeViewA { // remove the view from the view hierarchy [self.viewAController.view removeFromSuperview]; // dispose of the view controller so it doesn't leak. self.viewAController = nil; }
確保不泄漏子視圖 controller 及其視圖非常重要。
這些方法中的任何一種都有效,但使用導航 controller 對我來說似乎更習慣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.