読者です 読者をやめる 読者になる 読者になる

ピヨピヨ日記 シンガポール編

シンガポール生活の日記とかいろいろ

Swift で sender :AnyObject から UIButton にキャスト

完全に Objective-C 脳なので、Swift のお勉強がかなり辛い。今後10年 Objective-C だけでやっていけるのならいいのだけど、どうもそうはいかないっぽいのでようやく重い腰をあげて Swift お勉強中。これはキャッチアップにかなり時間がかかりそう。

 

本題の sender :AnyObject から UIButton にキャストする方法だけど、次のように書くことはできる。

 

@IBAction func buttonDidPush(sender: AnyObject) {
    let button = sender as! UIButton  // sender を UIButton にキャスト
    if let buttonTitle = button.titleLabel?.text {
        print("\(buttonTitle) was pushed")
    }

}

 

ただし、これだと sender が UIButton でなかった場合にアプリが落ちる。

ので、たぶん、次のような書き方のほうがいい、と思う。

 

@IBAction func buttonDidPush(sender: AnyObject) {
    if let button = sender as? UIButton {
        if let buttonTitle = button.titleLabel?.text {
            print("\(buttonTitle) was pushed")
        }
    }
}

 

とりあえずこれでよさそうな気がするので、しばらくはこんな感じで書いてみる。

Swift のお作法はかなり気合いれて勉強しないといけないっぽい。