ankur kumawat
ankur kumawat

Reputation: 21

How to show Single date in multiple events reload in MBCalendarKit

I am using a Calendar view in my project. I am using a MBCalendarKit. That time single date in single event show. But I want single date on multiple events show. But how it possible please help.

- (void) viewWillAppear: (BOOL)animated{

  NSArray *title = [_caldevice valueForKey:@"pill"];
 // NSLog(@"event name fetch %@",title);

NSArray *date =[_caldevice valueForKey:@"datetaken"];
 // NSLog(@"event fetch %@",date);

NSArray*dose= [_caldevice valueForKey:@"dose"];


NSString *title1;
NSString*title2;
NSDate *date1;
NSData *imgdata;
CKCalendarEvent *releaseUpdatedCalendarKit;
NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
  dateFormatter.dateFormat = @"dd-MM-yyyy";


for (int i = 0; i < [date count]; i++){
    title1 = NSLocalizedString(title[i], @"");
    title2 = NSLocalizedString(dose[i], @"");
    NSString *combined = [NSString stringWithFormat:@"%@ - %@", title1, title2];

    date1 = [dateFormatter dateFromString:date[i]];


    releaseUpdatedCalendarKit = [CKCalendarEvent eventWithTitle:combined andDate:date1 andInfo:Nil];

   // NSLog(@"Event: %@ , %@",combined,date1);
   // releaseUpdatedCalendarKit = [CKCalendarEvent eventWithTitle:combined andDate:date1 andInfo:Nil andColor:[UIColor blueColor]];


    self.data[date1] = @[releaseUpdatedCalendarKit];
}


}

Upvotes: 0

Views: 58

Answers (1)

Moshe
Moshe

Reputation: 58087

You're looping over a bunch of events and for each event, you're *replacing the previously assigned array with a new one, containing a single element.

Replace this:

self.data[date1] = @[releaseUpdatedCalendarKit];

with something more like this:

// 1. First, get the previous events for that day.
NSMutableArray <CKCalendarEvent *> *events = self.data[date1].mutableCopy;

// 2. If events exist, append the event, otherwise create an empty array with the new event.
if (events) {
  [events addObject: newEvent];
}
else  {
   events = @[newEvent];
}

// 3. Set the events for the date key.
self.data[date1] = events;

This way you're doing an "add or create" operation, instead of overwriting each time.

Disclosure: I wrote and maintain MBCalendarKit.

Upvotes: 0

Related Questions