是否可以在课堂上获得IB的按钮标题?

时间:2015-04-26 05:33:03

标签: ios swift uibutton

我有几个标题为0 - 9的按钮,在我的自定义UIButton类中,我希望能够使用开关来检查按钮标题。按钮在故事板中创建。 UIButton类看起来像:

protocol NumpadDelegate: class {
    func changeValue()
}

class NumpadButton: UIButton, NumpadDelegate {

    let initial = String()          // I want to assign the title of the button here
    var alternative = String()
    var change: Bool = false {
        didSet {
            let title = change ? alternative : initial
            setTitle(title, forState: .Normal)
        }
    }

    func changeValue() {
        change = !change
    }
}

有没有办法做到这一点,或者我必须以编程方式创建按钮?我试图限制使用自定义UIButton类,因此我不必为每个按钮创建一个。

编辑:

根据要求,按下按钮的代码:

@IBAction func buttonNumber(sender: UIButton) {
        let value = sender.titleLabel!.text!

        switch value {
        case "C": orderLabel.text = ""
        default: orderLabel.text = orderLabel.text.map { count($0) < 10 ? $0 + value : $0 } ?? value
        }

        if let check = orderLabel.text {
            inputResult.removeAll(keepCapacity: false)

            for index in 0..<items.count {
                let id = items[index].id
                if id.lowercaseString.hasPrefix(check.lowercaseString) {
                    inputResult += [items[index]]
                }
            }

            numpadTableView.reloadData()
        }
    }

我尝试做的是,当我滑动按钮时,我希望他们的标题更改为另一个String,即标题为1的按钮将更改为A,标题为2的按钮将更改为乙

2 个答案:

答案 0 :(得分:2)

而不是将按钮分配到参考插座&#39;在Interface Builder中,将它们分配给引用集合&#39;您可以声明为

 @IBOutlet var buttons: [NumpadButton]

答案 1 :(得分:0)

不确切地知道你的目的是什么,但这里有一个例子,我为每个NumpadButton创建了出口并将它们添加到array

class ViewController: UIViewController {

@IBOutlet weak var button1: NumpadButton!
@IBOutlet weak var button2: NumpadButton!
@IBOutlet weak var button3: NumpadButton!
@IBOutlet weak var button4: NumpadButton!

var array: NSMutableArray = []

override func viewDidLoad() {
    super.viewDidLoad()
    array.addObject(button1)
    array.addObject(button2)
    array.addObject(button3)
    array.addObject(button4)
}

每个按钮的标题为“1”,“2”,“3”或“4”。然后你可以通过案例陈述检查标题,如下所示:

override func viewWillAppear(animated: Bool) {

    for item in array {

        var button = item as! UIButton

        switch button.currentTitle! {
            case "1":
                println("This button has title of 1")
            case "2":
                println("This button has title of 2")
            case "3":
                println("This button has title of 3")
            case "4":
                println("This button has title of 4")
            default:
                println("default case")
        }
    }
}

}

这将是您使用案例陈述访问UIButtons标题然后只需将应用程序调整为您想要的任何功能(例如通过IBAction等)的一种方式。