快速日历 - 移至下周

时间:2016-10-18 07:16:10

标签: swift uicollectionview uicollectionviewlayout

我正在从this example开始快速制作日历。

到目前为止,这是结果,我只展示从今天开始的7天。

enter image description here

我在下周添加了一个按钮。到目前为止,我已经尝试过这个:

func moveToNextWeek() {
    self.startDateInWeek = self.startDateInWeek?.dateByAddingDays(days: 7)

    DispatchQueue.main.async {
            self.collectionView.performBatchUpdates({        
                    }, completion: { (completed) in
                            self.collectionView.reloadData()
                            self.weekFlowLayout?.invalidateLayout()

            })
    }
}

这只是更改变量startDateInWeek,当加载的视图被声明为startDateInWeek = Date()时(今天的日期)。

然而,当我按下按钮时,又添加了一周,但我必须手动滚动。

dateByAddingDays()Date扩展名,声明为

func dateByAddingDays(days:Int)->Date{
    let calendar = Calendar(identifier: .gregorian)
    var comp = DateComponents()
    comp.day = days
    return calendar.date(byAdding: comp, to: self)!
}

1 个答案:

答案 0 :(得分:0)

Calendar提供了一种更好的方法来计算下周的开始,即使取决于当前区域设置的第一个工作日设置:

let calendar = Locale.current.calendar
calendar.firstWeekday // Sunday == 1, Saturday == 7
let weekDayComponent = DateComponents(weekday:calendar.firstWeekday)
let startOfNextWeek = calendar.nextDate(after: Date(), matching: weekDayComponent, matchingPolicy: .nextTime)