I have same issue. but made some modification and it works.
First you have to replace code method. File. DSLCalendarRange.m
// Designated initialiser
- (id)initWithStartDay:(NSDateComponents *)start endDay:(NSDateComponents *)end {
NSParameterAssert(start);
NSParameterAssert(end);
self = [super init];
if (self != nil) {
// Initialise properties
_startDay = [start copy];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyyMMdd"];
NSString *stringFromDate = [NSString stringWithFormat:@"%i%2i%2i",start.year,start.month,start.day];
stringFromDate = [stringFromDate stringByReplacingOccurrencesOfString:@" " withString:@"0"];
_startDate = [formatter dateFromString:stringFromDate];
_endDay = [end copy];
stringFromDate = [NSString stringWithFormat:@"%i%2i%2i",end.year,end.month,end.day];
stringFromDate = [stringFromDate stringByReplacingOccurrencesOfString:@" " withString:@"0"];
_endDate = [formatter dateFromString:stringFromDate];
// _endDate = [end date];
}
return self;
}
And also in file. DSLCalendarMonthView.m
- (void)updateDaySelectionStatesForRange:(DSLCalendarRange*)range {
for (DSLCalendarDayView *dayView in self.dayViews) {
if ([range containsDate:dayView.dayAsDate])
{
BOOL isStartOfRange = (range.startDay.day == dayView.day.day &&
range.startDay.month == dayView.day.month &&
range.startDay.year == dayView.day.year); //[range.startDay isEqual:dayView.day];
BOOL isEndOfRange = (range.endDay.day == dayView.day.day &&
range.endDay.month == dayView.day.month &&
range.endDay.year == dayView.day.year); //[range.endDay isEqual:dayView.day];
if (isStartOfRange && isEndOfRange) {
dayView.selectionState = DSLCalendarDayViewWholeSelection;
}
else if (isStartOfRange) {
dayView.selectionState = DSLCalendarDayViewStartOfSelection;
}
else if (isEndOfRange) {
dayView.selectionState = DSLCalendarDayViewEndOfSelection;
}
else {
dayView.selectionState = DSLCalendarDayViewWithinSelection;
}
[dayView setNeedsDisplay];
}
else {
dayView.selectionState = DSLCalendarDayViewNotSelected;
}
}
}
And Then you can use it like this .
NSDateComponents *startDateComps = [[NSCalendar currentCalendar] components:NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear fromDate:_checkIn];
;
NSDateComponents *endDateComps = [[NSCalendar currentCalendar] components:NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear fromDate:_checkOut];
DSLCalendarRange *newRange=[[DSLCalendarRange alloc] initWithStartDay:startDateComps endDay:endDateComps];
[self.calendarView setSelectedRange:newRange];