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



我有几个标题为 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 的按钮将更改为 B。

不要在界面生成器中将按钮分配给"引用出口",而是将它们分配给"引用插座集合",您可以将其声明为

 @IBOutlet var buttons: [NumpadButton]

不知道你要做什么,但这里有一个例子,我为每个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")
        }
    }
}

}

这将是您可以使用 case 语句访问UIButtons标题的一种方式,然后将应用程序调整为您想要的任何功能(例如,通过IBAction等)。

最新更新