過去のブログのアーカイブ
この記事は前身のブログのアーカイブを引き継いだものです.
画像が正しく表示できないなど,コンテンツの表示に問題がある恐れがあります.画面上にかんたんにメッセージを表示するコード。大抵の言語は1行で表示することができますが、Swiftだとそういうわけには行かないようです。ただ汎用性のあるコードが書けるので融通は利くかも。
選択肢のあるメッセージ
// UIAlertControllerを生成 let alui = UIAlertController(title: "Message Title", message: "Message Contents.", preferredStyle: UIAlertControllerStyle.alert) // 選択肢としてContinueボタンを用意する let btn = UIAlertAction(title: "Continue", style: UIAlertActionStyle.default, handler: nil) alui.addAction(btn) // 画面に表示する present(alui, animated: true, completion: nil)
1つのボタンがあるボタンを用意するだけで最低4行は必要になります。(無理やり縮めることも可能ではあるが…)
なお「Continueボタンを用意する」部分の2行を省くとボタンがないメッセージが表示されて一瞬で消えます。少なくともメッセージを表示したいときは1つのボタンは最低必要になります。
また、この場合だとボタンを押しても何も起きませんが、ボタンが押された(タッチされた)際のイベントはhandler引数に指定します。
指定した時間だけ表示して勝手に消えるメッセージ
ユーザーアクセシビリティ的にはよろしくない方法だけど、選択肢なしのメッセージでちゃんとユーザーが読めるようにする手段もあります。
let alui = UIAlertController(title: "Error!", message: "The key is not found.", preferredStyle: UIAlertControllerStyle.alert) present(alui, animated: true, completion: {Void in // 5秒待機 Thread.sleep(forTimeInterval: 5.0) })
presentメソッドのcompletion引数に数秒待つスリープを呼び出せばこれでもOK、実際こんな実装している人は見たことない。
私が思うに、presentメソッドのcompletion引数はnilを指定する人が多いんじゃないかなって思う。使い道あるのかなこれ