在使用函数创建按钮后,在Swift 3中,如何更改该按钮的属性?

时间:2016-12-15 06:58:20

标签: swift xcode function button

xcode新手。我正在使用以下函数来创建许多新按钮。我想在创建单个按钮后为其设置动画,但不确定如何与新按钮进行交互。

功能:

func createButton(buttonTitle: String, xaxis: Double, yaxis: Double) {
    let button = UIButton(type: .system)
    button.frame = CGRect(x: xaxis, y: yaxis, width: 100.0, height: 30.0)
    button.setTitle(NSLocalizedString(buttonTitle, comment: buttonTitle), for: .normal)
    button.layer.cornerRadius = 0.05 * button.bounds.size.width
    button.clipsToBounds = true
    button.backgroundColor = .gray
    button.setTitleColor(.white, for: .normal)
    button.adjustsImageWhenHighlighted = true

    button.addTarget(self, action: #selector(self.buttonAction(sender:)), for: .touchUpInside)
    view.addSubview(button)
}

2 个答案:

答案 0 :(得分:2)

根据Nick Allen的建议,您可以更改函数以返回UIButton

func createButton(buttonTitle: String, xaxis: Double, yaxis: Double) -> UIButton {
let button = UIButton(type: .system)
return button 
}

// - 然后创建按钮

let button1 = createButton(.....)
view.addSubview(button1).   

答案 1 :(得分:1)

如果您不想创建一个实例变量来保存按钮,可以在按钮中添加一个标记,并在以后获取对它的引用。

为此,请在按钮上添加标签:

button.tag = 300 // no other view should have the same tag to avoid issues

然后您可以从视图控制器的任何位置轻松引用您的按钮,如下所示:

if let button = view.viewWithTag(300) as? UIButton {
    // change any properties of the button as you would normally do
    button.setTitle("Updated title", for: .normal)
}

我建议在ViewController类顶部的常量中定义标记值,以避免使用'幻数'在你的代码中。