部分标题标题的月份和年份的字符串

时间:2016-01-31 17:51:28

标签: ios swift tableview

我在Xcode中创建了一个包含核心数据的项目。

我的NSManagedObjects模型带有" startDate"属性。 我还为我的模型添加了一些自定义函数,以便从" startDate"中获取月份和年份字符串:

func monthName() -> String {
        let date = self.startDate!
        let calendar = NSCalendar.currentCalendar()
        let components = calendar.components([.Month], fromDate: date)
        var monthName: String = ""
        switch components.month {
        case 1:
            monthName = "January"
        case 2:
            monthName = "February"
        case 3:
            monthName = "March"
        case 4:
            monthName = "April"
        case 5:
            monthName = "May"
        case 6:
            monthName = "June"
        case 7:
            monthName = "July"
        case 8:
            monthName = "August"
        case 9:
            monthName = "September"
        case 10:
            monthName = "October"
        case 11:
            monthName = "November"
        case 12:
            monthName = "December"
        default:
            monthName = "WRONG"
        }
        return monthName
    }
    func yearString() -> String {
        let calendar = NSCalendar.currentCalendar()
        let components = calendar.components([.Year], fromDate: self.startDate!)
        let stringFromYear = String(components.year)
        return stringFromYear
    }

我现在要做的是为部分创建自定义标题。

我的tableView由fetchedRestulsController管理(而sectionNameKeyPath设置为" monthName"。

我创建了名为" HeaderTableViewCell"的自定义文件。它包含" monthNameLabel"和#34; yearLabel"网点。

我设置了这样的标题:

func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let headerCell = tableView.dequeueReusableCellWithIdentifier("SectionHeaderCell") as! HeaderTableViewCell
    let dateString = self.fetchedResultsController?.sections![section].name
    headerCell.monthNameLabel.text = dateString

    return headerCell
}

它根据月份对我的日期进行分组。

我想编写一个代码,根据他们的月份和年份对我的日期进行分组,但我不知道该怎么做。

我是否已开始正确实施此操作?或者我可能完全错了?

1 个答案:

答案 0 :(得分:0)

我设法得到了我想要的结果。

我将monthName和yearString函数合并为一个" dateName",所以我得到的字符串例如:" 2016年1月"。

然后我使用" dateName"作为fetchedResultsController中的sectionNameKeyPath。

然后在viewForHeaderInSection中我使用我的自定义单元格并按原样设置其monthNameLabel.text和yearLabel.text:

func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        let headerCell = tableView.dequeueReusableCellWithIdentifier("SectionHeaderCell") as! HeaderTableViewCell
        let dateString = self.fetchedResultsController?.sections![section].name
        let arrayOfString = dateString?.characters.split{$0 == " "}.map(String.init)
        headerCell.monthNameLabel.text = arrayOfString![0]
        headerCell.yearLabel.text = arrayOfString![1]

        return headerCell
    }

现在完美无缺:)