2013-07-02 88 views
1

我有一個觀點,在它自己的類,退出它自己的xib。ios什麼是layoutsubviews

該視圖被初始化並作爲子視圖添加到我的viewController視圖中。

當視圖初始化時,調用layoutSubviews方法,我在視圖中定製了一些東西。

但是當從超視圖中刪除視圖時調用哪個方法(如果有的話)?

例如,對於ViewController,將調用viewWill/DidDisappear。有沒有類似於UIView的方法(與layoutSubviews相對)?

在此先感謝

---編輯---

我剛剛發現了一個名叫上都添加和刪除子視圖方法:

- (void)willMoveToSuperview:(UIView *)newSuperview 

,如果newSuperview == 0,您可以自定義刪除子視圖。

我是對的還是處理這種情況的俗氣方式?

+0

我想你已經找到了最好的解決方案,但我的問題是,爲什麼你需要知道什麼時候從佈局中刪除視圖? –

+0

「didMoveToWindow」似乎是你正在尋找的。當接收器剛剛從其超視圖中移除時,或者接收器剛添加到未連接到窗口的超視圖時,就會發生這種情況。如果這些方法不重要,則可以選擇忽略這種方法。 – ldindu

+0

@DanF感謝您的評論。我需要它,因爲我使用它而不是視圖控制器。這是一個小視角,我認爲它會更輕。 –

回答

3

但是當從超視圖中刪除視圖時調用哪個方法(如果有的話)?

-removeFromSuperview被調用,所以如果您需要在刪除視圖時需要做一些清理工作,那麼您可以覆蓋它。請記得撥打super的版本。

-layoutSubviews不一定只在視圖添加到超級視圖時被調用 - 只要需要佈局就調用它。例如,可能會在方向更改時,或者當超級視圖重新出現時,或視圖的框架更改時調用它。 -layoutSubviews實際上並不相反,因爲不需要。 (它叫什麼?-messupSubviews ?--))

+0

覆蓋removeFromSuperview是我認爲的最佳解決方案!謝謝!我正在使用uiview子類作爲「更輕」的視圖控制器。 –

+0

和BTW我明白layoutSubviews的功能,我使用它來定製視圖時添加。有沒有更好的辦法? –