UIAlertController를 더욱 편리하게 하는 도우미(.Alert 한정)
추기 (2015.07.19)
저는 Swift에 UIAlertController의 조수 라이브러리를 썼어요.
http://qiita.com/keygx/items/e3fea65870336fe6b46c
추기 (2015.07.17)
내용이 업그레이드되어 라이브러리화되었다.
https://github.com/keygx/AlertHelperKit
는 UIAlertController에서 경고 표시를 하는 도우미입니다.
누르고 싶은 단추를 분리해서 처리할 수도 있습니다.
AlertHelper.swift
import UIKit
class AlertHelper: NSObject {
class func showAlert (title: String?, message: String?, cancel: String?, destructive: [String]?, others: [String]?, parent: UIViewController, callback: (Int) -> ()) {
// アラート要素が全てnilの場合は中止
if title == nil && message == nil && cancel == nil && destructive == nil && others == nil {
return
}
// アラート作成
let alertController = UIAlertController(title: title?, message: message?, preferredStyle: .Alert)
// キャンセルボタン処理
if cancel != nil {
let cancelAction = UIAlertAction(title: cancel!, style: .Cancel) {
action in callback(0)
}
alertController.addAction(cancelAction)
}
let destructivOffset = 1
var othersOffset = destructivOffset
// Destructiveボタン処理
if destructive != nil {
for i in 0..<destructive!.count {
let destructiveAction = UIAlertAction(title: destructive![i], style: .Destructive) {
action in callback(i + destructivOffset)
}
alertController.addAction(destructiveAction)
++othersOffset
}
}
// その他ボタン処理
if others != nil {
for i in 0..<others!.count {
let otherAction = UIAlertAction(title: others![i], style: .Default) {
action in callback(i + othersOffset)
}
alertController.addAction(otherAction)
}
}
// アラート表示
parent.presentViewController(alertController, animated: true, completion: nil)
}
}
사용법
호출자는 약간 긴 (파라미터가 w가 많은) 방법으로 이런 느낌입니다.
- 경고 내용에 따라 필수 항목 설정
-title, 메시지,cancel,destructive,others가 필요 없을 때nil
-destructive,others는 여러 설정을 배열할 수 있습니다
- 취소 버튼의 buttonIndex는 항상 0이며, 이외의 버튼은 설정된 순서대로 1~
다음은 몇 가지 예를 들자.
샘플 1
먼저 [취소] [OK] 모드가 고정되어 있습니다.
AlertHelper.showAlert("アラート", message: "メッセージ", cancel: "キャンセル", destructive: nil, others: ["OK"], parent: self) {
(buttonIndex: Int) in
// 押されたボタンのインデックスにて処理を振り分ける
switch buttonIndex {
case 1 :
// OK
println("\(buttonIndex)")
break
default :
// キャンセル
println("\(buttonIndex)")
break
}
}
샘플 2
Destructive 스타일은 다음과 같습니다.
AlertHelper.showAlert("アラート", message: "メッセージ", cancel: "キャンセル", destructive: ["反対"], others: ["賛成"], parent: self) {
(buttonIndex: Int) in
// 押されたボタンのインデックスにて処理を振り分ける
switch buttonIndex {
case 1 :
// 反対
println("\(buttonIndex)")
break
case 2 :
// 賛成
println("\(buttonIndex)")
break
default :
// キャンセル
println("\(buttonIndex)")
break
}
}
샘플 3
버튼 제목이 정렬에 따라 증가합니다.그 수신자에 맞추는 것도 늘어날 거야.
AlertHelper.showAlert("アラート", message: "メッセージ", cancel: "キャンセル", destructive: nil, others: ["選択肢1", "選択肢2", "選択肢3"], parent: self) {
(buttonIndex: Int) in
// 押されたボタンのインデックスにて処理を振り分ける
switch buttonIndex {
case 1 :
// 選択肢1
println("\(buttonIndex)")
break
case 2 :
// 選択肢2
println("\(buttonIndex)")
break
case 3 :
// 選択肢3
println("\(buttonIndex)")
break
default :
// キャンセル
println("\(buttonIndex)")
break
}
}
샘플
닫을 때만 확인을 알립니다.
AlertHelper.showAlert(nil, message: "メッセージ", cancel: "確認", destructive: nil, others: nil, parent: self) {
(buttonIndex: Int) in
// ボタンを押されてもなにもしない
}
Reference
이 문제에 관하여(UIAlertController를 더욱 편리하게 하는 도우미(.Alert 한정)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/keygx/items/768873d364acb1bd3c37텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)