我正在XCode Beta 7(Swift2)中创建键盘扩展。
我正在尝试将多个按钮连接到一个动作。
但是,当我将所有按钮插座连接到此动作时,会导致我的键盘崩溃,这让我觉得有些东西我不知道。
@IBOutlet weak var Label: UIButton!
@IBAction func ButtonTapped(sender: AnyObject) {
Label.setTitle("Hello!", forState: .Normal)
Label.hidden = false
Label.backgroundColor = UIColor.whiteColor().colorWithAlphaComponent(0.5)
NSTimer.scheduledTimerWithTimeInterval(2, target: self, selector: "hideLabel", userInfo: nil, repeats: false)
}
@objc func hideLabel() {
Label.hidden = true
Label.backgroundColor = UIColor.clearColor()
}
答案 0 :(得分:1)
将相同的操作附加到多个按钮不是问题,并且是常用技术。
但是,你将Label设置为force-unwrapped,如果它是nil则会崩溃。
我的猜测是你的Label插座没有连接,所以Label在运行时是零。
将标签类型从UIButton!
更改为UIButton?
,然后将代码更改为使用"如果让"如果label为非零,则可选绑定仅使用Label执行代码。
最后,"标签"是一个可怕的按钮名称。它是一个按钮,而不是UILabel。称之为" myButton"或者其他东西。
代码可能如下所示:
@IBOutlet weak var myButton: UIButton?
@IBAction func ButtonTapped(sender: AnyObject)
{
println("myButton = \(myButton)") //See if myButton is nil
if let myButton = myButton
{
myButton.setTitle("Hello!", forState: .Normal)
myButton.hidden = false
myButton.backgroundColor = UIColor.whiteColor().colorWithAlphaComponent(0.5)
NSTimer.scheduledTimerWithTimeInterval(2, target: self,
selector: "hidemyButton",
userInfo: nil, repeats: false)
}
}
@objc func hidemyButton()
{
myButton.hidden = true
myButton.backgroundColor = UIColor.clearColor()
}