UIAlertController を楽に書く為の最高のライブラリを作りました (◍•ᴗ•◍)
概要
iOS アプリにおいて UIAlertController
はユーザーに確認を取ったり、選択をしたりするときによく使う UI です.
しかしながら使うために書くコードの量が多く、しかも単調で辛いです.
そこでいい感じにかけるライブラリを作りました. ->
https://github.com/mironal/ShortHandAlert
問題提起
繰り返しになりますが UIAlertController
を使うためのコードは長いです. こんな感じです.
let alert = UIAlertController(title: "title", message: nil, preferredStyle: .actionSheet)
alert.addAction(UIAlertAction(title: "Some", style: .default, handler: { _ in
print("do something...")
}))
alert.addAction(UIAlertAction(title: "Another", style: .default, handler: { _ in
print("do something...")
}))
alert.addAction(UIAlertAction(title: "Cancel", style: .cancel))
present(alert, animated: true)
上の例は3つのアクションを持つアクションシートです. 縦にも横にも長いですね.
僕は特に addAction(UIAlertAction(ほんにゃらかんにゃら))
って書くところがごちゃごちゃするのでとても辛くて心を無にしてタイピングしています.
ライブラリ
そこでいい感じのは無いかな〜〜と思い github を探したのですが、どれも冗長だったので気持ちよく書けるやつを自作しました.
↓ これです.
https://github.com/mironal/ShortHandAlert
先に述べた大変つらいコードと同等のことをするコードは以下のとおりです.
UIAlertController(title: "Title", message: nil, preferredStyle: .actionSheet)
.default("Some") {
print("do something...")
}
.destructive("Another") {
print("do something...")
}
.cancel()
.present(in: self)
とてもスッキリと書けます. 特に横幅が短くて済むので好きです.
UIAlertController
の extension として作ってあるので新たに覚えることは殆ど無く簡単に使い始めることができます.
また、 AlertBuilder
というよく使う Alert を簡単に作るための Builder クラスも作ってあります.
こんな感じに使えます.
AlertBuilder()
.confirm(title: nil, message: "Some message")
.approve()
.present(in: self)
エラーを表示するだけならこんな感じ.
AlertBuilder()
.confirm(error: error)
.approve() { _ in /* OK 押した後に何かしたいならここに書く. */ }
.present(in: self)
これは戻り値をいい感じに設計してあるので補完候補がいい感じに出るようになっています. UIAlertController
の extension として書いた部分が補完を汚すのでそれを解決するためにこいつを作りました.
簡単な Alert を作るときは AlertBuilder
を使ってそれ以外は UIAlertController
の extension を使うのがおすすめです.
より詳しくは README や API ドキュメントをご確認ください.
インストール
インストールは Carthage を使うのをおすすめしています. コードが2つしか無いので自分のプロジェクトにそのままコピーしてもいいと思います.
使いたくなったらぜひともスターをお願いします. https://github.com/mironal/ShortHandAlert
Author And Source
この問題について(UIAlertController を楽に書く為の最高のライブラリを作りました (◍•ᴗ•◍)), 我々は、より多くの情報をここで見つけました https://qiita.com/mironal/items/8a9e5ab7cb1f6c8e1ff8著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .