我有几个标题为 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
等)。