我有帶有自定義復選框的表格視圖。在這里,如果我單擊select alltableview 之外的按鈕,那么我需要顯示所有用復選標記選擇的 tableview 行
代碼: tableview 單元格包含用于行選擇的 chkImg 和 chkBtn。使用此代碼,我可以選擇和取消選擇多行,但如果我單擊selectAllBtn,我需要選擇所有行cell.chkImg.image = UIImage(systemName: "checkmark")和所有行 idarrSelectedRows
如何做到這一點,請指導我
var arrSelectedRows:[Int] = []
@IBAction func selectAllBtn(_ sender: UIButton) {
tableView.reloadData()
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: ServiceListTableViewCell.cellIdentifier, for: indexPath) as! ServiceListTableViewCell
let id = self.serviceList?.result?.services?[indexPath.row].id ?? 0
if arrSelectedRows.contains(id){
cell.chkImg.image = UIImage(systemName: "checkmark")
}else{
cell.chkImg.image = UIImage(named: "checkbox_inactive")
}
cell.chkBtn.tag = id
cell.chkBtn.addTarget(self, action: #selector(checkBoxSelection(_:)), for: .touchUpInside)
return cell
}
@objc func checkBoxSelection(_ sender:UIButton)
{
print(sender.tag)
if self.arrSelectedRows.contains(sender.tag){
self.arrSelectedRows.remove(at: self.arrSelectedRows.index(of: sender.tag)!)
print("arrayof selected row ids \(arrSelectedRows)")
}else{
self.arrSelectedRows.append(sender.tag)
}
self.tableView.reloadData()
}
uj5u.com熱心網友回復:
您可以使用 Swift map 函式,通過它您可以獲取 selectedArray 中的所有 id
@IBAction func selectAllBtn(_ sender: UIButton) {
let servicesCount = self.serviceList?.result?.services?.count ?? 0
if servicesCount == self.arrSelectedRows {
self.arrSelectedRows.removeAll()
} else {
self.arrSelectedRows = self.serviceList?.result?.services?.map({$0.id ?? 0})
}
tableView.reloadData()
}
uj5u.com熱心網友回復:
單擊按鈕時,執行這行代碼。
for i in 0..<self.serviceList?.result?.services.count{
arrSelectedRows.append(self.serviceList?.result?.services?[i].id)
}
self.tableView.reloadData()
uj5u.com熱心網友回復:
@Azruddin Shaikh 對這個問題的回答是正確的。我將通過按下相同的按鈕添加取消選擇所有專案的邏輯。
首先,您必須創建一個IBOutlet按鈕
@IBOutlet weak var selectAllButton: UIButton!
然后在IBAction方法中,根據按鈕的當前標題更改按鈕的標題。
@IBAction func selectAllBtn(_ sender: UIButton) {
let titleText = sender.titleLabel?.text ?? ""
if titleText == "Select All" {
self.arrSelectedRows = self.serviceList?.result?.services?.map({$0.id ?? 0})
self.selectAllButton.setTitle("Deselect All", for: .normal)
} else if titleText == "Deselect All" {
self.arrSelectedRows.removeAll()
self.selectAllButton.setTitle("Select All", for: .normal)
}
tableView.reloadData()
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/470572.html
