LoginSignup
21
21

More than 5 years have passed since last update.

まだUIAlertViewとUIAlertControllerで使い分けで消耗してるの?

Posted at

消耗

私は完全に消耗してました。
下記のような処理をあちこちに書き散らしそうになってましたね。

if(OS_VERSION <= iOS7) {
    // UIAlertView
} else {
    // UIAlertController
}

『この辺の処理を隠ぺいする独自のクラスを作ればいいじゃない』というモヒカン話なのですが、当方怠惰を愛するハッカー(笑)なので作りたくないです。

なので、私はRMUniversalAlertに移住することにしました。

ありがてえ。

使い方

githubのUsageを見れば終わりです。
tapBlockという所で『○○がタップされたとき』の処理を書いてゆきます。
煩雑になりそうですね。

下記は自分で使った箇所のメモ。

アプリでTwitter連携したい、よくあるかと思います。
で、アカウント一覧をアクションシート上に表示してユーザに選択させるようなヤツが必要になったりしますよね。

Twitterアカウント一覧をシートに表示して選ばせるヤツ
let accountList = "ACAccountのArrayがあると想定"
let accountNameList = (accountList).map { (account) in
      account.username
}

RMUniversalAlert.showActionSheetInViewController(self, withTitle: "アカウント認証", message: "twitterアカウントを選択してください", cancelButtonTitle: "キャンセル", destructiveButtonTitle: nil, otherButtonTitles: accountNameList, tapBlock: {(alert, buttonIndex) in
        if (buttonIndex >= alert.firstOtherButtonIndex) {
          let index = buttonIndex - alert.firstOtherButtonIndex
          let selectedAccount = accountList[index]
          AwesomeMode.instance.loginBy(selectedAccount)
        }
})

キャンセルとかは一切使わないのでtapBlockではアカウントが選択されたときの処理だけを書いてます。
で、アカウントのリストは人によって変化するので、タップされたときにindexを出してあげてaccountListから対象のACAccountインスタンスを取ってきて何かしらの処理をするようにしました。

勉強になりました、シェアさせてください。

21
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
21