Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift日历-移动到下周_Swift_Uicollectionview_Uicollectionviewlayout - Fatal编程技术网

Swift日历-移动到下周

Swift日历-移动到下周,swift,uicollectionview,uicollectionviewlayout,Swift,Uicollectionview,Uicollectionviewlayout,我正在用swift从开始制作日历 到目前为止,这是结果,我只显示了从今天开始的7天 我添加了一个按钮,将在下周显示。到目前为止,我已经尝试过: func moveToNextWeek() { self.startDateInWeek = self.startDateInWeek?.dateByAddingDays(days: 7) DispatchQueue.main.async { self.collectionView.performBatchUp

我正在用swift从开始制作日历

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

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

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
,当加载的视图被声明为just
startDateInWeek=Date()
(今天的日期)时,该变量就是

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

dateByAddingDays()
是声明为

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

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)

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)

谢谢,瓦迪安。这是一个更好的方法。但我不认为这能解决我的问题,不是吗?谢谢瓦迪安。这是一个更好的方法。我不认为这能解决我的问题,不是吗?