2010-01-31 87 views
2

我有視圖A,當用戶點擊一個按鈕時,我彈出視圖B.當用戶解散視圖B,我們返回視圖AI想刷新視圖A上的標籤,但是有一個事件,我可以用來檢測我們已經返回到視圖B?我知道ViewDidLoad不會再次觸發。如何檢測一個SubView已關閉?

回答

2

我很困惑你的問題的意見,但你可以看看NSNotificationCenter

在這種情況下,你會當用戶關閉瀏覽B.發佈的NSNotification事件

視圖A和B可與通知中心偵聽這種解職申報登記,調用一個選擇器(方法)時,此聽到通知。

在此方法中,您可能會更新標籤的狀態或執行涉及更新應用程序狀態的任何其他操作。

同樣,您可能會在彈出視圖B時發佈通知,並讓其他類註冊該通知類型。

有關NSNotificationCenter的更多信息位於Apple's documentation site

+0

有趣,謝謝!對於混淆的道歉,我仍然習慣適當的術語。 – 2010-01-31 21:01:42

1

這聽起來像你可能指的是UIViewControllers,而不是UIViews,是否正確?在這種情況下,您可以使用-viewWillDisappear:(BOOL)動畫和-viewDidDisappear:(BOOL)動畫來確定您的viewController何時將被/正在被解散。這些應該在您的示例中的視圖B上實現。如果你想知道什麼時候View A再次可見,你可以使用-viewWillAppear:和-viewDidAppear。

+0

是的,UIViewControllers。然而,我發現當視圖B被解除時(即this.View.RemoveFromSuperview();),ViewWillAppear和ViewDidAppear不會在視圖A上被觸發。我通過在兩個事件處理程序的View A中放入Console.WriteLine語句來檢查這一點,並且它們僅在第一次出現View A時觸發。 – 2010-01-31 21:08:37

+0

這是正確的;爲了讓它們觸發,你需要使用UINavigationController(或UITabBarController) – 2010-01-31 21:16:59

+0

因此,我認爲唯一的辦法就是NSNotificationCenter。那是對的嗎?這是否會讓View A在View B完成RemoveFromSuperview之後更新自己的標籤?我擔心View A會得到通知的方式是View A將實例化標籤。其中的一個例子是將視圖A的視圖B的引用傳遞給視圖A,併爲View A提供一個屬性來訪問這樣的標籤,如果視圖B嘗試更新它,則標籤爲空,因爲視圖A的標籤當前未實例化。 – 2010-01-31 23:39:25