自动更改不同ViewControllers上的UIButtons

时间:2016-10-19 21:06:18

标签: ios uibutton viewcontroller

我在不同的ViewControllers上有UIButtons菜单。所有这些看起来都一样。 当有未读消息或其他事件发生时,我想在每个ViewController上更改菜单按钮的图像。如何在不在每个ViewController上手动更改它的情况下完成它?

2 个答案:

答案 0 :(得分:1)

一个简单的解决方案是保留一个UIButton数组,您可以在传入消息发生时迭代它。

let buttons: [UIButton] = [view1.button1, view2.button2]
... /// when event happens
for button in buttons {
    button.backgroundColor = UIColor.red
}

这是有效的,因为按钮是引用类型而不是值类型。

然而,这似乎更像是一个关于如何处理事件的整体设计问题。我建议您查看RxSwiftReactivCocoa以将传入的事件绑定到您的用户界面。

答案 1 :(得分:1)

继承自UIButton。在您继承的按钮类中注册一个选择器,它将改变您的按钮图像。

NotificationCenter.default.addObserver(self, selector: #selector(updateButton), name: NSNotification.Name("myEventIdentifier"), object: nil)

现在每当您触发要捕获的事件时,您都会发布通知,并通过在按钮的每个已注册实例上调用选择器来触发更改:

NotificationCenter.default.post(name: NSNotification.Name("myEventIdentifier"), object: nil)