我在ViewController.swift按鈕:顯示/隱藏的UIButton在另一個控制器
@IBOutlet weak var exampleButton: UIButton!
我想顯示/隱藏從AppDelegate中,具體的事情發生時,該按鈕(即應用程序進入後臺等等。)。 我該怎麼做?
我在ViewController.swift按鈕:顯示/隱藏的UIButton在另一個控制器
@IBOutlet weak var exampleButton: UIButton!
我想顯示/隱藏從AppDelegate中,具體的事情發生時,該按鈕(即應用程序進入後臺等等。)。 我該怎麼做?
一種方法可以 - 您可以使用通知在這個
添加觀察在您的視圖控制器,其中按鈕需要隱藏
NSNotificationCenter.defaultCenter().addObserver(
self,
selector: "hideButton",
name: @"HIDE_BUTTON_NOTIFICATION",
object: nil)
func hideButton() -> Void {
// Hide your button here
// Remember to hide on main thread
}
從任何你想要的隱藏按鈕(如從AppDelegate),您可以發佈此通知
NSNotificationCenter.defaultCenter().postNotificationName(@"HIDE_BUTTON_NOTIFICATION", object: nil)
通知是一個好主意,但如果您的ViewController不是您的初始ViewController,或者尚未初始化,該怎麼辦?它將無法捕獲此通知。擴展到其他答案的可能解決方案(可能不是優雅)是提供一個標誌。您的ViewController將會檢查它,例如在viewDidLoad()
。您的標誌可以存儲在一個單獨的對象中,該對象將從AppDelegate捕獲通知。總之,你應該在你的ViewController中添加通知觀察者,從AppDelegate捕獲事件。 (像在其他答案)
創建單身類來存儲適當的信息。在viewDidLoad
檢查條件:
if YOUR_SINGLETON.YOUR_FLAG == true {
showButton()
} else {
hideButton()
}
不要忘了還加通知觀察員在單例類。
絕對需要!我同意你的觀點,很好的觀察。非常感謝你 :-) – MeV
謝謝你,聽起來像一個神奇的方式來做我想要的! – MeV
我唯一對此的評論是某些遠程對象不應該「控制」其他視圖的UI。稍後,您可能會有兩個視圖根據某些條件做不同的事情。發佈驅動視圖控制器的條件(狀態) - 可能是「LoggedIn」或「NotLoggedIn」,然後在需要時採取適當的操作。爲了使通知中的單個UI對象具有特定的「代碼味道」,稍後會引起您(或其他人)的問題。 –
謝謝大衛。我明白,我會嘗試將這些動作組合在一個地方/功能中,以避免不同的行爲。謝謝!! :-) – MeV