如何根据所选日期显示UITableView?

时间:2016-12-29 05:36:09

标签: ios swift uitableview uibutton

我有一个带有2个按钮的tableview,一个按钮用于today,第二个按钮用于yesterday,如下所示以及下面的数据,其中tDays的整数数组表示工作日的值,如{{1} }

Sunday = 1,....Saturday = 7

现在当我按var tAnimals:[String] = ["Cat", "Dog", "Rabbit"] var tDays:[[Int]] = [[3,4],[4,5],[5,6]] class ViewController: UIViewController,UITableViewDataSource,UITableViewDelegate { @IBOutlet weak var myTableView: UITableView! @IBOutlet weak var todayBtn: UIButton! @IBOutlet weak var yesterdayBtn: UIButton! override func viewDidLoad() { super.viewDidLoad() } func tableView(_ tableView:UITableView, numberOfRowsInSection section:Int) -> Int { return tAnimals.count } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let myCell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! CustomCell myCell.titleLabel.text = "Animals" return myCell } } 时,我希望在表视图中看到todayBtn,因为今天是Dog and Rabbit,我按Thursday = 5,我希望看到{{1}因为它是yestredayBtn

我发现了这个扩展程序,用于查找工作日的价值,但不知道如何将其应用为按钮标记

Cat and Dog

有没有办法可以将工作日的值分配为按钮标记,以便它们每天自动更新并显示正确的数据。

1 个答案:

答案 0 :(得分:2)

这样的事可能需要一些折射,我希望你能得到基本的想法:

class ViewController: UIViewController,UITableViewDataSource,UITableViewDelegate {

    var tAnimals:[String] = ["Cat", "Dog", "Rabbit"]
    var tDays:[[Int]] = [[3,4],[4,5],[5,6]]
    var arrdata:[String] = []
    var today:Int!
    var day:Int!

    @IBOutlet weak var myTableView: UITableView!
    @IBOutlet weak var todayBtn: UIButton!
    @IBOutlet weak var yesterdayBtn: UIButton!


    override func viewDidLoad() {
        super.viewDidLoad()

        today = Date().dayNumberOfWeek()
    }

    //connect this IBAction with todayBtn & yesterdayBtn
    @IBAction func actChangeData(_ sender: UIButton) {

        arrdata.removeAll()
        if sender == todayBtn {
            day = today
        } else {
            day = today - 1
        }

        for i in 0...tAnimals.count-1 {
           if tDays[i].contains(day) {
               arrdata.append(tAnimals[i])
            }
        }

        myTableView.reloadData()
    }

    func tableView(_ tableView:UITableView, numberOfRowsInSection section:Int) -> Int {
        return arrdata.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let myCell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! CustomCell
        myCell.titleLabel.text = arrdata[indexPath.row]
        return myCell
    }
}

extension Date {
    func dayNumberOfWeek() -> Int? {
        return Calendar.current.dateComponents([.weekday], from: self).weekday
    }
}