Attaching the same action to multiple buttons is not a problem, and is a common technique.
However, you have Label set as force-unwrapped, which will crash if it is nil.
My guess is that your Label outlet is not connected so Label is nil at runtime.
Change the type of Label from UIButton!
to UIButton?
and then change your code to use "if let" optional binding to only execute the code using Label if label is non-nil.
BTW, Swift has a strong naming convention. Variable names should start with a lower-case letter and use "camel case" for the rest of the variable name. Only class names and type names should start with a capital letter. So "Label" should be "label" instead. Get in the habit of following that style. It serves as a clear visual cue to you and others reading your code as to what type of thing a name refers to.
Finally, "Label" is a horrible name for a button. It's a button, not a UILabel. Call it "myButton" or something instead.
EDIT
The code might look like this:
@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()
}