簡體   English   中英

從其他類的超級視圖中刪除視圖

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM