我可以更改Swift应用程序中所有按钮的属性吗?

Max*_*wer 6 uibutton ios

我有一个Swift应用程序,可以浏览许多视图控制器,所有视图控制器都具有相似的外观.每个视图控制器中都有按钮,我没有创建IBOutlet属性(它们都只是通过Interface Builder触发segue).

是否有一种简单的方法可以更改应用程序中所有按钮的背景颜色或文本颜色,而无需为IB中的每个按钮更改它,或为每个按钮创建IBOutlet?

Pat*_*ick 9

以下是简化操作的基本步骤,在您的情况下,必须为每个viewController重复这一步骤.

  1. 为所有按钮创建一个插座:

    @IBOutlet var myButtons: [UIButton]!
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用视图上的每个按钮连接(拖动)此插座.单击界面中的每个按钮,然后选中connections inspector(带圆圈中箭头的最后一个按钮)中的"引用插座集合" .请注意,它们应该全部链接到myButtons.

  3. 在for循环中设置按钮的样式:

    for button in self.myButtons {
        button.backgroundColor = UIColor.clearColor()
        button.layer.borderWidth = 1
        button.layer.borderColor = UIColor.greenColor().CGColor
    }
    
    Run Code Online (Sandbox Code Playgroud)

要使这项工作适用于广泛,您可以选择一些方法进行调查.你可以使用常量这样至少当你想改变风格,你只需要修改一个文件:常量在Objective-C ,全局常量文件中的斯威夫特.

或者,有几种方法可以使函数公开.我将尝试获取一些示例代码,但是调用的类buttonStyle对每个viewController都很重要,并在for循环中调用:[buttonStyle styleButton:button].该styleButton函数将设置样式(我没有为此测试任何东西).

通过@zisoft查看这个答案:如何使用Swift遍历UIViewController的Outlets,它是一个更详细的日志!