2016-09-13 12 views
2

こんにちは、私はすべて私のプロジェクトでFSCalandarと働いています。すべて正常に動作していますが、私はユーザーが入力する日付のカレンダーの日付の色を変更できません。基本的に私はFSCalanderを使って私のプロジェクトに現在の機能と欠けている機能を追加したいと思っています。私はすでにfscalanderappearanceデリゲートメソッドと呼ばれています。私のコードを見てください。特定の日付のFSCalandar日付の色を変更する方法?

これはこれは.Mファイルである.hファイル

@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 

です。

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

    } 

誰もがこの問題に行けば助けてください。ありがとう。デリゲートメソッドは呼び出されません。

+0

誰かがこの問題に直面したら、私に何か提案してください。 –

答えて

1

あなたはFSCalendarデータ、TableViewControllerまたはUITableViewCellでそれを実装するのではなく、TableViewが含まれていViewControllerへの委任& FSCalendarDelegateAppearanceを適用することができます。次に、以下のようにメソッドtitleDefaultColorForDateをオーバーライドします。わたしにはできる。

-(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; 
} 
関連する問題