Posted at

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

More than 3 years have passed since last update.


消耗

私は完全に消耗してました。

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

if(OS_VERSION <= iOS7) {

// UIAlertView
} else {
// UIAlertController
}

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

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

https://github.com/ryanmaxwell/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インスタンスを取ってきて何かしらの処理をするようにしました。


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