Show/Hide 另一个控制器中的 UIButton
Show/Hide UIButton in another controller
我的 ViewController.swift 中有一个按钮:
@IBOutlet weak var exampleButton: UIButton!
我想 show/hide AppDelegate 的那个按钮,当特定的事情发生时(即应用程序进入后台等)。
我该怎么做?
一种方法可以是
- 您可以为此使用通知
在需要隐藏按钮的视图控制器中添加 Observer
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),你可以post这个通知
NSNotificationCenter.defaultCenter().postNotificationName(@"HIDE_BUTTON_NOTIFICATION", object: nil)
与其让另一个对象直接操作它,不如使用通知来指示状态更改。状态决定按钮是否出现。
确保在您的通知侦听器中您只触摸主线程上的按钮。
通知是个好主意,但如果您的 ViewController 不是您的初始 ViewController,或者尚未初始化怎么办?它将无法捕获此通知。扩展到其他答案的可能解决方案(可能不优雅)是提供一个标志。您的 ViewController 将对其进行检查,例如在 viewDidLoad()
。您的标志可以存储在一个单例对象中,该对象将捕获来自 AppDelegate 的通知。
总而言之,您应该在 ViewController 中添加通知观察器,以捕获来自 AppDelegate 的事件。 (就像其他答案一样)
创建单例class 以存储适当的信息。
检查 viewDidLoad
中的条件:
if YOUR_SINGLETON.YOUR_FLAG == true {
showButton()
} else {
hideButton()
}
别忘了在您的单例中也添加通知观察器 class。
我的 ViewController.swift 中有一个按钮:
@IBOutlet weak var exampleButton: UIButton!
我想 show/hide AppDelegate 的那个按钮,当特定的事情发生时(即应用程序进入后台等)。 我该怎么做?
一种方法可以是 - 您可以为此使用通知
在需要隐藏按钮的视图控制器中添加 Observer
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),你可以post这个通知
NSNotificationCenter.defaultCenter().postNotificationName(@"HIDE_BUTTON_NOTIFICATION", object: nil)
与其让另一个对象直接操作它,不如使用通知来指示状态更改。状态决定按钮是否出现。
确保在您的通知侦听器中您只触摸主线程上的按钮。
通知是个好主意,但如果您的 ViewController 不是您的初始 ViewController,或者尚未初始化怎么办?它将无法捕获此通知。扩展到其他答案的可能解决方案(可能不优雅)是提供一个标志。您的 ViewController 将对其进行检查,例如在 viewDidLoad()
。您的标志可以存储在一个单例对象中,该对象将捕获来自 AppDelegate 的通知。
总而言之,您应该在 ViewController 中添加通知观察器,以捕获来自 AppDelegate 的事件。 (就像其他答案一样)
创建单例class 以存储适当的信息。
检查 viewDidLoad
中的条件:
if YOUR_SINGLETON.YOUR_FLAG == true {
showButton()
} else {
hideButton()
}
别忘了在您的单例中也添加通知观察器 class。