增加可以塞選人員的簽到紀錄查看,先手動增加一個pkv值後再加入AI輔助
用pkv來篩選簽到紀錄的查看的人員 且需要一個選項為所有人 再查看人員資料而不是簽到紀錄時隱藏 我已經建好pkv了 名字是pkvs
若不加最後一段跟AI說我已經建好了AI會幫我把它刪到再見一個連結
@IBOutlet weak var pkvs: UIPickerView!
// 篩選後的簽到記錄
private var filteredCheckInRecords: Results<CheckInRecord>?
// 用戶數據陣列 (用於 PickerView)
private var userPickerData: [String] = ["所有人"]
// 根據當前模式載入對應數據
if currentDisplayMode == .users {
loadUsers()
} else {
// 加載用戶數據到 PickerView
loadUserPickerData()
// 載入所有簽到記錄(預設顯示所有人的記錄)
loadCheckInRecords()
// 選擇「所有人」選項
pkvs.selectRow(0, inComponent: 0, animated: false)
filterCheckInRecords(forUserIndex: 0)
}
// 更新 PickerView 的可見性
updatePickerViewVisibility()
// 設置 PickerView
private func setupPickerView() {
// 設置代理和數據源
pkvs.delegate = self
pkvs.dataSource = self
// 初始選擇「所有人」選項
pkvs.selectRow(0, inComponent: 0, animated: false)
}
// 載入用戶數據到 PickerView
private func loadUserPickerData() {
userPickerData.removeAll()
userPickerData.append("所有人") // 添加「所有人」選項
if let users = users {
for user in users {
userPickerData.append(user.Name)
}
}
// 重新載入 PickerView 數據
pkvs.reloadAllComponents()
}
// 根據選中的用戶篩選簽到記錄
private func filterCheckInRecords(forUserIndex index: Int) {
guard let users = users else { return }
if index == 0 {
// 如果選擇的是「所有人」,則顯示所有簽到記錄
filteredCheckInRecords = checkInRecords
} else {
// 否則,根據選中的用戶篩選簽到記錄
let selectedUser = users[index - 1] // 減去 1 是因為索引 0 是「所有人」
let realm = try! Realm()
filteredCheckInRecords = realm.objects(CheckInRecord.self).filter("userId == %@", selectedUser.userId).sorted(byKeyPath: "checkInTime", ascending: false)
}
// 重新載入 TableView 數據
tbvlist.reloadData()
}
// MARK: - UIPickerViewDataSource, UIPickerViewDelegate
extension listViewController: UIPickerViewDataSource, UIPickerViewDelegate {
// 返回 PickerView 有幾個區域
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
// 返回每個區域的行數
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return userPickerData.count // 使用 userPickerData 而不是直接使用 users
}
// 返回每一行的內容
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return userPickerData[row] // 從 userPickerData 取得標題
}
// 行被選中時的處理
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
// 使用 filterCheckInRecords 方法根據選擇的索引篩選記錄
filterCheckInRecords(forUserIndex: row)
}
}