Ios UICollectionView未正确返回单元格
我正在使用collectionView创建日历。。。到目前为止,我把所有的工作日都安排得很好,但我对编号的日子有问题。collectionView总是返回31天,而不检查该月是包含30天还是31天。。我错在哪里?一些疏忽的错误?你能帮助我吗?这是我用来获取日历的代码Ios UICollectionView未正确返回单元格,ios,uiview,uicollectionview,nsdate,nsindexpath,Ios,Uiview,Uicollectionview,Nsdate,Nsindexpath,我正在使用collectionView创建日历。。。到目前为止,我把所有的工作日都安排得很好,但我对编号的日子有问题。collectionView总是返回31天,而不检查该月是包含30天还是31天。。我错在哪里?一些疏忽的错误?你能帮助我吗?这是我用来获取日历的代码 +(NSInteger)dayOfMonthFromDate:(NSDate *)date { NSCalendar *calendar = [NSCalendar currentCalendar]; NSRange
+(NSInteger)dayOfMonthFromDate:(NSDate *)date {
NSCalendar *calendar = [NSCalendar currentCalendar];
NSRange range = [calendar rangeOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitMonth forDate:date];
NSInteger numberOfDayInMonth = range.length;
return numberOfDayInMonth;
}
+(void)buildSmartCalendarDayWithWeekArray:(NSMutableArray *)week andDay:(NSMutableArray *)day {
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDate *now = [NSDate date];
/***** YEAR ****/
NSInteger year = [calendar component:NSCalendarUnitYear fromDate:now];
/**** MONTH ****/
NSInteger month = [calendar component:NSCalendarUnitMonth fromDate:now];
NSDateComponents *components = [[NSDateComponents alloc] init];
components.day = 1;
components.month = month+4;
components.year = year;
NSDate *date = [calendar dateFromComponents:components];
NSDateComponents *compWeek = [calendar components:NSCalendarUnitWeekday fromDate:date];
NSInteger weekDay = [compWeek weekday];
/******* Numero di giorni del mese in corso *******/
/*************************************************/
NSInteger numberOfDay = [KPSmallCalendarDayData dayOfMonthFromDate:[NSDate date]];
//------------------------------------------------------------------//
/******* Recupera in quale giorno siamo *******/
/*************************************************/
NSUInteger todayWeekDay = weekDay-1;
/******* Crea un ciclo for per la suddivisione di ogni giorno del mese in forma testuale *******/
/*****************************************************************************/
for (NSInteger initialDay = 1; initialDay <= numberOfDay; initialDay ++) {
// Crea l'array contenente tutti giorni del mese dal LUN alla DOM
NSDateFormatter *dayFormat = [[NSDateFormatter alloc] init];
NSString *dayString = [NSString stringWithFormat:@"%@", [[dayFormat shortWeekdaySymbols] objectAtIndex:todayWeekDay]];
NSString *uppercase = [dayString uppercaseString];
[week addObject:uppercase];
todayWeekDay ++;
// Crea l'array contenente la numerazione delle celle
NSNumber *totalDay = [NSNumber numberWithInteger:initialDay];
[day addObject:totalDay];
if (todayWeekDay >6) todayWeekDay = 0;
}
}
+(NSInteger)dayOfMonthFromDate:(NSDate*)日期{
NSCalendar*日历=[NSCalendar currentCalendar];
NSRange range=[日历范围单位:NSCalendarUnitDay单位:NSCalendarUnitMonth日期:日期];
NSInteger numberOfDayInMonth=范围.length;
返回每月的天数;
}
+(void)buildSmartCalendarDayWithWeekArray:(NSMutableArray*)周和日:(NSMutableArray*)日{
NSCalendar*日历=[NSCalendar currentCalendar];
NSDate*现在=[NSDate日期];
/*****年****/
NSInteger year=[日历组件:NSCalendarUnitYear from日期:现在];
/****月****/
NSInteger month=[日历组件:NSCalendarUnitMonth fromDate:now];
NSDateComponents*components=[[NSDateComponents alloc]init];
组分:日=1;
组件。月份=月份+4;
组件。年=年;
NSDate*date=[calendar dateFromComponents:components];
NSDateComponents*compWeek=[日历组件:NSCalendarUnitWeekday fromDate:date];
NSInteger weekDay=[compWeek weekDay];
/*******科尔索省的梅斯省第二大城市*******/
/*************************************************/
NSInteger numberOfDay=[KPSmallCalendarDayData dayOfMonthFromDate:[NSDate date]];
//------------------------------------------------------------------//
/*******在奎尔吉奥尔诺西亚莫复发*******/
/*************************************************/
NSUInteger todayWeekDay=weekDay-1;
/*******为ogni giorno del mese的Suddivisine提供形式测试的Crea un ciclo*******/
/*****************************************************************************/
对于(NSInteger initialDay=1;initialDay 6)todayWeekDay=0;
}
}
也许
1. NSDate *date = [calendar dateFromComponents:components];
2. NSDateComponents *compWeek = [calendar components:NSCalendarUnitWeekday fromDate:date];
3.
4. NSInteger weekDay = [compWeek weekday];
5.
6. /******* Numero di giorni del mese in corso *******/
7. /*************************************************/
8. NSInteger numberOfDay = [KPSmallCalendarDayData dayOfMonthFromDate:[NSDate date]];
看起来您想从第1行开始使用date
,但您正在第8行传递一个新的date
对象([NSDate date]
它==今天)。第8行应该是:
NSInteger numberOfDay = [KPSmallCalendarDayData dayOfMonthFromDate:date];