//
// Alert.swift
// Seknova-Practice
//
// Created by imac-2437 on 2023/9/20.
//
import UIKit
class Alert {
class func showAlertSheetWith(names: [String],
vc: UIViewController,
completionHandler: ((Int) -> Void)?) {
DispatchQueue.main.async {
let controller = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)
for (index, name) in names.enumerated() {
let action = UIAlertAction(title: name, style: .default) { action in
completionHandler?(index)
}
controller.addAction(action)
}
let cancelAction = UIAlertAction(title: "取消", style: .cancel, handler: nil)
controller.addAction(cancelAction)
vc.present(controller, animated: true)
}
}
}
Alert類別介紹
Alert類別是一個用於處理警示框的工具類別。它提供了一個方法,可以在應用程式中顯示一個包含選擇項目的動作表(Action Sheet)。
showAlertSheetWith(names:vc:completionHandler:):這是Alert類別的主要方法。它接受以下參數:
names:一個包含選擇項目名稱的字串陣列。這些名稱將顯示在動作表中,供使用者選擇。
vc:要顯示動作表的視圖控制器(ViewController)。
completionHandler:一個閉包(Closure),當使用者選擇了某個項目時,這個閉包將被調用,並帶有被選擇的項目的索引。如果不需要處理使用者的選擇,可以傳遞nil給這個參數。
動作表(Action Sheet)的建立
在這個方法內部,首先使用UIAlertController來建立一個動作表,並指定它的標題和消息,這兩者都設為nil,表示沒有標題和消息。
選項的設定
接著,使用for-in迴圈遍歷names陣列中的項目。對於每個名稱,創建一個UIAlertAction物件,並設定它的標題為該名稱,風格為.default。此外,設定該動作的閉包,以在使用者選擇該項目時調用completionHandler,並將該項目的索引作為參數傳遞給completionHandler。
取消選項的設定
除了選擇項目外,還添加一個取消選項,它的標題設為"取消",風格為.cancel,這表示當使用者點擊取消時,不會執行任何操作。
動作表的顯示
最後,使用vc.present()方法將剛剛建立的動作表顯示在當前的視圖控制器上,並設定animated為true,以實現動畫效果。
總之,Alert類別的主要功能是方便地創建和顯示包含選擇項目的動作表。這個動作表可用於多種情境,例如在應用程式中讓使用者選擇不同的選項或操作。這個類別使得在iOS應用程式中實現使用者互動變得更加方便和可讀性高。