【发布时间】:2015-07-04 15:10:29
【问题描述】:
我有几个标题为 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。
【问题讨论】:
-
你能告诉我们点击按钮时的按钮点击方法吗?也是所有按钮都调用同一个方法吗?
-
看起来你无缘无故地把它复杂化了。如果你想要按钮的当前标题,UIButton 上有这个属性 currentTitle 。
-
@KumarNitin 如果我为每个按钮创建一个访问属性的插座,这不会有问题。但我想避免创建多个出口,而是想通过创建一个自定义类并在那里处理事情来解决它。