2017-10-11 129 views
0

我使用collectionView創建了一個日曆...到目前爲止,我完全獲得了所有WEEKDAY,但是我遇到了編號日期的問題。 collectionView總是會返回我31天而不檢查該月是否包含30天或31天..我錯在哪裏?注意力不集中的錯誤?你可以幫我嗎?這是代碼,我用它來獲取日曆UICollectionView不能正確返回單元格

+(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; 
    } 
} 

回答

1

也許......

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]]; 

它看起來像你想使用date從第1行,但你傳遞一個date對象在第8行([NSDate date]其中==今天)。應該是第8行:

NSInteger numberOfDay = [KPSmallCalendarDayData dayOfMonthFromDate:date]; 
+0

是@don !!!謝謝...這是非常愚蠢的錯誤 – kAiN