Cái này dùng chung 1 loại customize cell rồi đổi màu thôi, problem là algorithm tính ngày lặp lại.
Trước tiên analyse requirements kỹ:
“mỗi kip chứ làm 4 ngày lại nghỉ 2 rồi chuyển ca đêm 4 ngày ___> lặp lại”
Vậy là khi bắt đầu user vẫn phải chọn ngày đầu tiên để làm default là ca ngày/đêm, từ mốc này ta tính tiếp thôi:
A) User chọn ngày đầu tiên là ngày làm ca ngày.
1/ Nếu ngày chọn đầu tiên là ca ngày + 4 = ngày nghỉ
2/ Có ngày nghỉ đầu tiên + 2 = ngày làm ca đêm
3/ Có ngày ca đêm + 4 = ngày nghỉ tiếp theo.
B) User chọn ngày đầu tiên là làm ca đêm, tương tự case A mà ngược lại thôi.
Giả sử mình tách riêng algorithm nãy giờ thành 1 func calculateShift(firstDate: String) -> ShiftType
Bạn cần call func này trước cho 1 arrShiftType(tạm có type [ShiftType]) tính trước cho 1 năm đi chẳng hạn, rồi dùng cái này làm DataSource cho collectionView thôi
Trong cellForItemAtIndexPath, lấy ra shiftType tại arrShiftType[indexpath.item] gán cho cái cell -> done.