iT邦幫忙

2023 iThome 鐵人賽

DAY 28
0
//
//  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應用程式中實現使用者互動變得更加方便和可讀性高。


上一篇
Day27 BlueTooth 5
下一篇
Day29 正則帳號密碼
系列文
swift 新手路程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言