iOS開発:UIAlertControllerにチェックボックスを付ける[Objective-C]

昔のプログラムを久々に開くと、UIAlertで警告がたくさん出ます。
どうやら、「非推奨部品になったから変更して!」という事のよう。

UIAlertViewからUIAlertControllerという部品に変更になります。
view部品からコントローラーになるので、それなりに改造が必要ですが
単純なリプレースは巷に情報が溢れていますので割愛します。

今回の記事はUIAlertControllerにチェックボックスを付けるカスタマイズをすると嬉しいな、
という状況があり実現に試行錯誤した備忘録です。

準備
アラート表示を必要とするViewControllerのヘッダファイルに以下を定義
(プロパティで持つ必要ない場合はコード中で宣言)

これらの部品を使ってこんなのを作ってみます。
スクリーンショット 0028-01-27 17.54.44

スクリーンショット 0028-01-27 18.09.58

最後の貼り付けは順序が大切です。
チェックボックスはチェックボックス風のテキストコードを貼り付けて実現しています。
addsubviewする順序はラベルを先に宣言し、ボタンを宣言します。
こうする事で、同じサイズのラベルとボタンが重なって定義され、
また透明のボタンの下にチェックボックス風の表示内容が透けて見える事になります。

蛇足的ですが、ボタンのアクションに定義した multiDeleteFlgChg メソッドを定義します。

発生したイベントの中で、現在のラベルを確認して反転しているだけです。
作ったのは以上です。
実際に、アラートのボタン(本例では「削除する」ボタン)のイベントの中で、
ボタン反転処理と同じように、ラベルの内容を判断してあげればチェック状態を意識した処理が作れると思います。

課題は・・・・コントローラーならデザイン触れるんじゃないの?と思い縦幅だけ触ってみましたが
よく見るとボタンの罫線が付いてきて居ませんので、完成させるにはもう少し調査しなくてはいけませんね。

« (Previous Post)