diff --git a/MDatePickerView/ColDateCell.swift b/MDatePickerView/ColDateCell.swift index a2a67b7..95e1626 100644 --- a/MDatePickerView/ColDateCell.swift +++ b/MDatePickerView/ColDateCell.swift @@ -8,14 +8,30 @@ import UIKit + + class ColMonthCell: ColCell { - let month = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"] + let month = [ + MDateConverter.getMonthName(monthNumber: 1), + MDateConverter.getMonthName(monthNumber: 2), + MDateConverter.getMonthName(monthNumber: 3), + MDateConverter.getMonthName(monthNumber: 4), + MDateConverter.getMonthName(monthNumber: 5), + MDateConverter.getMonthName(monthNumber: 6), + MDateConverter.getMonthName(monthNumber: 7), + MDateConverter.getMonthName(monthNumber: 8), + MDateConverter.getMonthName(monthNumber: 9), + MDateConverter.getMonthName(monthNumber: 10), + MDateConverter.getMonthName(monthNumber: 11), + MDateConverter.getMonthName(monthNumber: 12)] var value = 0 + override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { - return 12 + + return month.count } override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { @@ -54,7 +70,7 @@ class ColMonthCell: ColCell { class ColDayCell: ColCell { var day = 0 - let week = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"] + let week = MDateConverter.getDayNames() override var Selected: [Int] { didSet{ @@ -108,7 +124,8 @@ class ColDayCell: ColCell { override func layoutSubviews() { super.layoutSubviews() - Col.scrollToItem(at: [0,(Selected[2]) - 1], at: .centeredHorizontally, animated: true) + + Col.scrollToItem(at: [0,Selected[2] - 1], at: .centeredHorizontally, animated: true) } override func selectDate(_ T : Int) { diff --git a/MDatePickerView/MDateConverter.swift b/MDatePickerView/MDateConverter.swift new file mode 100644 index 0000000..ecf9970 --- /dev/null +++ b/MDatePickerView/MDateConverter.swift @@ -0,0 +1,49 @@ +// +// MDateConverter.swift +// MDatePickerView +// +// Created by Carlos Mellado on 28/1/22. +// Copyright © 2022 Matt. All rights reserved. +// + +import Foundation + +extension Date { + + func matchesComponentDay(_ componentDay: Int) -> Bool { + + let dateDay = Calendar.current.component(.day, from: self) + + return dateDay == componentDay + } +} + +enum MDateConverter { + + static func getMonthName(monthNumber : Int) -> String { + + var dateComponents = DateComponents() + dateComponents.month = monthNumber + let dateFormatter = DateFormatter() + dateFormatter.dateFormat = "MMM" + let date = Calendar.current.date(from: dateComponents)! + let string = dateFormatter.string(from: date) + + return string.replacingOccurrences(of: ".", with: "").capitalized + } + + static func getDayNames() -> [String] { + + return NSCalendar.current.weekdaySymbols + } + + static func rearrange(array: Array, fromIndex: Int, toIndex: Int) -> Array{ + + var arr = array + + let element = arr.remove(at: fromIndex) + arr.insert(element, at: toIndex) + + return arr + } +} diff --git a/MDatePickerView/MDatePickerView.swift b/MDatePickerView/MDatePickerView.swift index 3c8ec63..1cc9951 100644 --- a/MDatePickerView/MDatePickerView.swift +++ b/MDatePickerView/MDatePickerView.swift @@ -159,12 +159,19 @@ extension MDatePickerView : ColCellDelegate { Y = year } - let dateComponents = DateComponents(calendar: Calendar.current, year: Y, month: M, day: D) - if let date = dateComponents.date { - delegate?.mdatePickerView(selectDate: date) + var dateComponents = DateComponents(calendar: Calendar.current, year: Y, month: M, day: D) + + var theDate = dateComponents.date! + + while(!theDate.matchesComponentDay(dateComponents.day!)) { + + D = dateComponents.day! - 1 + dateComponents = DateComponents(calendar: dateComponents.calendar, year: Y, month: M, day: D) + theDate = dateComponents.date! } - scrollToitem() + delegate?.mdatePickerView(selectDate: theDate) + + scrollToitem() } - } diff --git a/MDatePickerViewDemo.xcodeproj/project.pbxproj b/MDatePickerViewDemo.xcodeproj/project.pbxproj index 59d4bc8..eb02456 100644 --- a/MDatePickerViewDemo.xcodeproj/project.pbxproj +++ b/MDatePickerViewDemo.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 2FB73C0527A406180004C006 /* MDateConverter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FB73C0427A406180004C006 /* MDateConverter.swift */; }; AE2F928B23D28AAB0039D22D /* CustomDatePickerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE2F928A23D28AAB0039D22D /* CustomDatePickerView.swift */; }; AE2F928D23D28D8A0039D22D /* TextLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE2F928C23D28D8A0039D22D /* TextLabel.swift */; }; AE6ED1A023D288CC00E32FB8 /* ColCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE6ED19E23D288CC00E32FB8 /* ColCell.swift */; }; @@ -49,6 +50,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 2FB73C0427A406180004C006 /* MDateConverter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MDateConverter.swift; sourceTree = ""; }; AE2F928A23D28AAB0039D22D /* CustomDatePickerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomDatePickerView.swift; sourceTree = ""; }; AE2F928C23D28D8A0039D22D /* TextLabel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextLabel.swift; sourceTree = ""; }; AE6ED19E23D288CC00E32FB8 /* ColCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ColCell.swift; sourceTree = ""; }; @@ -135,6 +137,7 @@ C95B53A523CC162E00C05C24 /* MDatePickerView.h */, C95B53A623CC162E00C05C24 /* Info.plist */, C95B53B223CC170A00C05C24 /* MDatePickerView.swift */, + 2FB73C0427A406180004C006 /* MDateConverter.swift */, C95B53B123CC170A00C05C24 /* ColDateCell.swift */, AE2F928A23D28AAB0039D22D /* CustomDatePickerView.swift */, AE6ED19D23D288CC00E32FB8 /* Utils */, @@ -267,6 +270,7 @@ files = ( C95B53CF23CC199900C05C24 /* ColDateCell.swift in Sources */, AE6ED1A023D288CC00E32FB8 /* ColCell.swift in Sources */, + 2FB73C0527A406180004C006 /* MDateConverter.swift in Sources */, AE2F928B23D28AAB0039D22D /* CustomDatePickerView.swift in Sources */, AE2F928D23D28D8A0039D22D /* TextLabel.swift in Sources */, C95B53CE23CC199900C05C24 /* MDatePickerView.swift in Sources */, diff --git a/MDatePickerViewDemo.xcodeproj/project.xcworkspace/xcuserdata/carlosmellado.xcuserdatad/UserInterfaceState.xcuserstate b/MDatePickerViewDemo.xcodeproj/project.xcworkspace/xcuserdata/carlosmellado.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000..b6bf329 Binary files /dev/null and b/MDatePickerViewDemo.xcodeproj/project.xcworkspace/xcuserdata/carlosmellado.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/MDatePickerViewDemo.xcodeproj/xcuserdata/carlosmellado.xcuserdatad/xcschemes/xcschememanagement.plist b/MDatePickerViewDemo.xcodeproj/xcuserdata/carlosmellado.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..ee42794 --- /dev/null +++ b/MDatePickerViewDemo.xcodeproj/xcuserdata/carlosmellado.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,19 @@ + + + + + SchemeUserState + + MDatePickerView.xcscheme_^#shared#^_ + + orderHint + 1 + + MDatePickerViewDemo.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/MDatePickerViewDemo/AppDelegate.swift b/MDatePickerViewDemo/AppDelegate.swift index ba0eac5..3daff1b 100644 --- a/MDatePickerViewDemo/AppDelegate.swift +++ b/MDatePickerViewDemo/AppDelegate.swift @@ -11,8 +11,6 @@ import UIKit @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { - - func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. return true