Help us understand the problem. What is going on with this article?

UIAlertController を楽に書く為の最高のライブラリを作りました (◍•ᴗ•◍)

More than 1 year has passed since last update.

概要

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 を使うのがおすすめです.

より詳しくは READMEAPI ドキュメントをご確認ください.

インストール

インストールは Carthage を使うのをおすすめしています. コードが2つしか無いので自分のプロジェクトにそのままコピーしてもいいと思います.

使いたくなったらぜひともスターをお願いします. https://github.com/mironal/ShortHandAlert

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away