ios - 如何更改特定日期的 FSCalandar 日期颜色。?

标签 ios objective-c fscalendar

Hi all i am working with FSCalandar in my project. Everything is working fine but i am not able change calendar date color for the date which will entered by user. Basically i want to add the functionality of present and absent in my project using FSCalander. i already called fscalanderappearance delegate method.Please look at my code.

This is .h file

@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

This is .m file.

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

    }

Please help if anyone go with this problem. thanks. Delegates method not called.

最佳答案

您可以将 FSCalendar 数据、委托(delegate)和 FSCalendarDelegateAppearance 应用到 TableViewController 或包含 TableViewViewController 而不是在 中实现它>UITableViewCell。然后覆盖方法 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;
}

关于ios - 如何更改特定日期的 FSCalandar 日期颜色。?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39469285/

相关文章:

ios - 如何为 UIViewControllers 编写单元测试用例?

iphone - 将 c-struct 放入 NSArray 的最佳方法是什么?

ios - 我如何以编程方式选择日期并显示在 FSCalendar 上

ios - 如何将事件添加到 FSCalendar Swift?

ios - 在 Swift 的 FSCalendar 中没有调用 didSelectDate func

ios - 具有多个 NSDateFormatter 的 Swift 代码 - 优化

ios - 我在 Xcode 7.1 中收到此错误。提交错误报告并附上 */var.. IB 代理诊断

ios - ld : framework not found AdSupport for architecture armv7

ios - 对于特定对象,使一个数组等于另一个数组

objective-c - NSUUID 小写字符