2016-09-13 1 views
2

Hallo zusammen, ich arbeite mit FSCalandar in meinem Projekt. Alles funktioniert gut, aber ich bin nicht in der Lage, Kalenderdatum Farbe für das Datum zu ändern, das vom Benutzer eingegeben wird. Grundsätzlich möchte ich die Funktionalität von Gegenwart und Abwesenheit in meinem Projekt mit FSCalander hinzufügen. Ich habe bereits fscalanderapepearance delegate method.Please Blick auf meinen Code.Wie FSCalandar Datumsfarbe für das bestimmte Datum ändern.?

Dies ist .h-Datei

@interface CalTableCellTableViewCell : UITableViewCell <FSCalendarDelegate,  FSCalendarDataSource, FSCalendarDelegateAppearance> 
    { 
NSDate *myDate; 
NSDate *EndDate; 
NSMutableArray *array; 
} 

    @property (weak , nonatomic) FSCalendar *calendar; 
    @property (weak, nonatomic) IBOutlet NSLayoutConstraint *calendarHeightConstraint; 

    @property (weak, nonatomic) IBOutlet UIView *calview; 
    @property (strong, nonatomic) NSDate *selectedDate; 

    @property (strong, nonatomic) NSDictionary *fillSelectionColors; 
    @property (strong, nonatomic) NSDictionary *fillDefaultColors; 
    @property (strong, nonatomic) NSDictionary *borderDefaultColors; 
    @property (strong, nonatomic) NSDictionary *borderSelectionColors0; 

    @property (strong, nonatomic) NSArray *datesWithEvent; 
    @property (strong, nonatomic) NSArray *datesWithMultipleEvents; 


    @end 

Diese .m-Datei ist.

#import "CalTableCellTableViewCell.h" 

    @implementation CalTableCellTableViewCell 

    - (void)awakeFromNib { 
[super awakeFromNib]; 
// Initialization code 

myDate = (NSDate *)[[NSUserDefaults standardUserDefaults] objectForKey:@"myDateKey"]; 
NSLog(@"mydate %@", myDate); 



EndDate = (NSDate *)[[NSUserDefaults standardUserDefaults] objectForKey:@"EndDateKey"]; 

FSCalendar *calendar = [[FSCalendar alloc] initWithFrame:CGRectMake(0, 0, 250, 150)]; 
calendar.dataSource = self; 
calendar.delegate = self; 

[self.contentView addSubview:calendar]; 
self.calendar = calendar; 
_calendar.scrollDirection = FSCalendarScrollDirectionVertical; 
    calendar.appearance.caseOptions = FSCalendarCaseOptionsHeaderUsesUpperCase|FSCalendarCaseOptionsWeekdayUsesSingleUpperCase; 

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
formatter.dateFormat = @"d.M.yyyy"; 
NSString *string = [formatter stringFromDate:[NSDate date]]; 

NSLog(@"current date %@", string); 
_calendar.appearance.selectionColor = [UIColor blueColor]; 

_calendar.appearance.todayColor = [UIColor greenColor]; 
_calendar.appearance.cellShape = FSCalendarCellStyleRectangle; 



NSUserDefaults *userDef = [NSUserDefaults standardUserDefaults]; 
NSArray *testarray = [userDef objectForKey:@"name"]; 

array = [[NSMutableArray alloc]initWithArray:testarray]; 
NSLog(@"arraydata %@", array); 


self.datesWithEvent = @[@"2016-09-03", 
         @"2015-10-06", 
         @"2015-10-12", 
         @"2015-10-25"]; 

self.datesWithMultipleEvents = @[@"2015-10-08", 
           @"2015-10-16", 
           @"2015-10-20", 
           @"2015-10-28"]; 


    } 



    - (void)setSelected:(BOOL)selected animated:(BOOL)animated { 
[super setSelected:selected animated:animated]; 

// Configure the view for the selected state 
    } 





    - (void)calendar:(FSCalendar *)calendar boundingRectWillChange:(CGRect)bounds animated:(BOOL)animated 
    { 
_calendarHeightConstraint.constant = CGRectGetHeight(bounds); 
[self.contentView layoutIfNeeded]; 
    } 

    - (NSDate *)minimumDateForCalendar:(FSCalendar *)calendar 
    { 


return myDate; 


    } 

    - (NSDate *)maximumDateForCalendar:(FSCalendar *)calendar 
    { 
return EndDate; 


    } 

    #pragma mark - <FSCalendarDelegateAppearance> 


    - (UIColor *)calendar:(FSCalendar *)calendar appearance:(FSCalendarAppearance *)appearance titleDefaultColorForDate:(NSDate *)date; 
    { 
NSString *datestring = [calendar stringFromDate:myDate format:@"yyyy-MM-dd"]; 

if ([_datesWithEvent containsObject:datestring]) { 

    NSLog(@"test"); 

    return calendar.appearance.borderDefaultColor = [UIColor redColor]; 

} 

else if ([_datesWithMultipleEvents containsObject:datestring]) 
{ 
    NSLog(@"testing"); 
} 



    return nil; 

    } 

Bitte helfen Sie, wenn jemand mit diesem Problem gehen. Vielen Dank. Delegiertenmethode nicht aufgerufen.

+0

Geben Sie mir einige Vorschläge, wenn jemand dieses Problem gegenübersteht.? –

Antwort

1

Sie können FSCalendar Daten, Delegierter & FSCalendarDelegateAppearance zum TableViewController oder zum ViewController anzuwenden, die TableView statt es in UITableViewCell Umsetzung enthält. Dann überschreiben Sie die Methode titleDefaultColorForDate wie unten gezeigt. Für mich geht das.

-(UIColor *)calendar:(FSCalendar *)calendar appearance:(FSCalendarAppearance *)appearance titleDefaultColorForDate:(NSDate *)date{ 

    self.formatter = [[NSDateFormatter alloc] init]; 
    self.formatter.dateFormat = @"yyyy/MM/dd"; 
    NSString *CurrentDate = [self.formatter stringFromDate:date]; 
    NSString *Today = [self.formatter stringFromDate:[_Calendar today]]; 

    //_bookedDates are array of specific dates 
    if([_bookedDates containsObject:CurrentDate]) 
    //if booking dates contains currentdate change the color of the title 
    return [UIColor whiteColor]; 
    else 
    return appearance.titlePlaceholderColor; 
} 
Verwandte Themen