有关在Swift中设置警报天数的问题

时间:2019-11-07 05:00:33

标签: ios swift

我正在制作类似于iPhone闹钟应用程序的闹钟功能。

设置闹钟日期时,我正在编写代码以检查星期几。

class DaySelectCell: UITableViewCell {

    @IBOutlet weak var dayLbl: UILabel!
    @IBOutlet weak var checkView: Checkbox!
}
import UIKit

class DaySelectViewController: UIViewController {

    @IBOutlet weak var tableView: UITableView!

    let days = ["일요일마다","월요일마다","화요일마다","수요일마다","목요일마다","금요일마다","토요일마다"]

    override func viewDidLoad() {
        super.viewDidLoad()
        tableView.dataSource = self
        tableView.delegate = self
    }
}

extension DaySelectViewController: UITableViewDataSource, UITableViewDelegate {
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return days.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "DaySelectCell") as! DaySelectCell

        cell.dayLbl.text = days[indexPath.row]

        return cell
    }

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        let cell = tableView.dequeueReusableCell(withIdentifier: "DaySelectCell") as! DaySelectCell
    }
}

我要问的部分是didSelectRowAt 当我单击某天的单元格时,我想将该单元格的checkView.isSelectd设置为true

enter image description here

1 个答案:

答案 0 :(得分:1)

您必须管理数据源以保存所选的值,因此您可以假装选择了哪个索引。

var selectedDays: [Int] = []

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
   cell.accessoryType = selectedDays.contains(indexPath.row) ? .checkmark : .none
}

现在在didSelectRowAt方法中编写此代码

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    if let index = selectedDays.firstIndex(where: { $0 == indexPath.row }) {
        selectedDays.remove(at: index)
    } else {
        selectedDays.append(indexPath.row)
    }
    tableView.reloadData()
}