[英]remove view from super view from otherclass
嗨,我有三個視圖控制器。 A,B,C首先我在A下添加B,然后在B下添加C。在C視圖控制器中當單擊按鈕后C可見時,我想從超級視圖中刪除C,也要從其超級視圖中刪除B。我正在使用以下代碼
[self.view removeFromSuperview];
單擊按鈕,就能從B中刪除C。 但是我如何從C ViewController類的A中刪除B。 因此,在C視圖控制器中單擊按鈕后,必須同時刪除B,C和僅A。
提前致謝。
UIView
具有屬性superview
因此您可以調用。
[self.view.superview removeFromSuperview];
請務必閱讀文檔: UIView 。
編輯:請記住,由於視圖C是視圖B的子視圖,因此此代碼將從A中同時刪除C和B。
您需要在C與B或C與A之間建立某種依賴關系。簡單來說,C需要通知B應該將其從其父視圖中刪除,或者A應當將其從子視圖B中刪除。
您可以通過協議或通知來實現
您應該使用委托。 C是父視圖為B的視圖,因此更正確的說法是B是關閉C的視圖,並且對於B相同,A必須是關閉B的視圖。
為此,您必須在C中實現一個協議,在B中實現另一個協議,如下所示:
@protocol ViewControllerCDelegate <NSObject>
- (void)didSelectCloseViewC;
@end
而且視圖B必須實現此協議,並且在這種方法中,您必須關閉視圖C。像這樣:
- (void)didSelectCloseViewC {
[self.viewC removeFromSuperView];
}
並且您必須使用視圖B和A重復此過程,視圖B將具有其協議,視圖A將實現它。 因此,在以前的方法didSelectCloseViewC中,您最終將擁有以下內容:
- (void)didSelectCloseViewC {
[self.viewC removeFromSuperView];
[self.delegate didSelecCloseViewB];
}
在視圖A中,您將像這樣實現視圖B協議:
- (void)didSelectCloseViewB {
[self.viewB removeFromSuperView];
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.