경고 대화 상자 기본 모드
19252 단어 iOSSwiftuialertcontrollertech
개요
일반 클래스를 만들고 화면에서 UIAlertController 대화 상자의 표시를 호출합니다.
일반 단추 1개 또는 2개의 대화상자를 가정하십시오.
세 개 이상의 단추 설정이나 텍스트 필드가 있는 대화상자의 사용 빈도가 비교적 낮아 일반 클래스의 요구에 포함되지 않습니다.
설명 기본 대화 상자
AlertDialog
let alert = UIAlertController(title:<#title#>, message:<#message#>, preferredStyle:UIAlertController.Style.alert)
alert.addAction(UIAlertAction(title: <#buttonTItle#> , style:UIAlertAction.Style.default){
(action:UIAlertAction)in
//ボタンが押された時の処理
})
alert.addAction(UIAlertAction(title: <#cancelButtonTitle#>, style:UIAlertAction.Style.cancel){
(action:UIAlertAction)in
//キャンセルボタンが押されたときの処理
})
present(alert, animated: true, completion:nil)
<# #>
의 부분은 Xcode에서 자리 표시자로 처리됩니다.유니버설 클래스화
적절한 swift 파일 만들기 (여기는 Common.swift) 는 다음과 같습니다.
struct~의 구성은 개인의 취향에 따라 달라집니다.
ButonTitle을 nil로 설정하면 버튼이 표시되지 않습니다.또한
isDestructive:true
버튼이 빨간색으로 표시됩니다(삭제 등에 사용됨).commpletion에서 선택한 단추를 되돌려줍니다. (cancel은 가짜입니다.)nil을 설정할 수도 있습니다.
지정
preferredAction
버튼이 굵어집니다.상황에 따라 따로 사용하세요.topViewController()
에서 가장 앞의 ViewController를 가져와 대화 상자를 표시합니다.Common.swift
import UIKit
struct Common {
struct Utility {
/// アラートダイアログ
/// - Parameters:
/// - title: タイトル
/// - message: メッセージ
/// - okButtonTitle: 右側のボタンタイトル。nilでボタン非表示
/// - isDestructive: 右側のボタンスタイル、trueで赤文字になる(削除などのアクション向け)
/// - cancelButtonTitle: 左側キャンセルボタンのタイトル。nilでボタン非表示
/// - completion: キャンセルボタンタップでfalseを返す。OKボタンタップでtrueを返す。(省略可)
static func showAlert(title: String?, message: String?, okButtonTitle: String?, isDestructive: Bool, cancelButtonTitle: String?, completion: ((Bool) -> Void)?) {
let buttonStyle: UIAlertAction.Style!
if isDestructive == true {
buttonStyle = .destructive
} else {
buttonStyle = .default
}
let alert = UIAlertController(title: title, message: message, preferredStyle: UIAlertController.Style.alert)
if let okButtonTitle = okButtonTitle {
let OKAction = UIAlertAction(title: okButtonTitle, style: buttonStyle) { (_: UIAlertAction) in
if let completion = completion {
completion(true)
}
}
alert.addAction(OKAction)
alert.preferredAction = OKAction
}
if let cancelButtonTitle = cancelButtonTitle {
let cancelAction = UIAlertAction(title: cancelButtonTitle, style: UIAlertAction.Style.cancel) { (_: UIAlertAction) in
if let completion = completion {
completion(false)
}
}
alert.addAction(cancelAction)
}
let topview = topViewController()
if let topview = topview {
topview.present(alert, animated: true, completion: nil)
}
}
/// 最上位のViewControllerを取得
/// - Returns: UIViewController
static func topViewController() -> UIViewController? {
var topViewController: UIViewController?
if #available(iOS 13.0, *) {
let scenes = UIApplication.shared.connectedScenes
let windowScene = scenes.first as? UIWindowScene
let window = windowScene?.windows.first
topViewController = window?.rootViewController
} else {
topViewController = UIApplication.shared.keyWindow?.rootViewController
}
while (topViewController?.presentedViewController) != nil {
topViewController = topViewController?.presentedViewController
}
return topViewController
}
}
}
사용법
viewController.swift
// ボタンひとつのシンプルなダイアログ
Common.Utility.showAlert(title: "タイトル", message: "メッセージ本文", okButtonTitle:"OK", isDestructive: false, cancelButtonTitle: nil, completion: nil)
// ボタンふたつのパターン
Common.Utility.showAlert(title: "タイトル", message: "メッセージ本文", okButtonTitle: "OK", isDestructive: true, cancelButtonTitle: "Cancel") { status in
if status == true {
// OKボタン選択時の処理
} else {
// Cancelボタン選択時の処理
}
}
Reference
이 문제에 관하여(경고 대화 상자 기본 모드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/maiimaii/articles/d43b764dd115dc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)