Files
OrderScheduling/Pods/ZLPhotoBrowser/Sources/General/ZLCustomAlertProtocol.swift
DDIsFriend f0e8a1709d initial
2023-08-18 17:28:57 +08:00

84 lines
1.9 KiB
Swift

//
// ZLCustomAlertProtocol.swift
// ZLPhotoBrowser
//
// Created by long on 2022/6/29.
//
import UIKit
public enum ZLCustomAlertStyle {
case alert
case actionSheet
}
public protocol ZLCustomAlertProtocol: AnyObject {
/// Should return an instance of ZLCustomAlertProtocol
static func alert(title: String?, message: String, style: ZLCustomAlertStyle) -> ZLCustomAlertProtocol
func addAction(_ action: ZLCustomAlertAction)
func show(with parentVC: UIViewController?)
}
public class ZLCustomAlertAction: NSObject {
public enum Style {
case `default`
case tint
case cancel
case destructive
}
public let title: String
public let style: ZLCustomAlertAction.Style
public let handler: ((ZLCustomAlertAction) -> Void)?
deinit {
zl_debugPrint("ZLCustomAlertAction deinit")
}
public init(title: String, style: ZLCustomAlertAction.Style, handler: ((ZLCustomAlertAction) -> Void)?) {
self.title = title
self.style = style
self.handler = handler
super.init()
}
}
/// internal
extension ZLCustomAlertStyle {
var toSystemAlertStyle: UIAlertController.Style {
switch self {
case .alert:
return .alert
case .actionSheet:
return .actionSheet
}
}
}
/// internal
extension ZLCustomAlertAction.Style {
var toSystemAlertActionStyle: UIAlertAction.Style {
switch self {
case .default, .tint:
return .default
case .cancel:
return .cancel
case .destructive:
return .destructive
}
}
}
/// internal
extension ZLCustomAlertAction {
func toSystemAlertAction() -> UIAlertAction {
return UIAlertAction(title: title, style: style.toSystemAlertActionStyle) { _ in
self.handler?(self)
}
}
}