ios - Events are not getting displayed after reloaddata in Timelineview of Tapku Calendar -


can 1 me issue experiencing?

i using tapku calendar library day view in order display events. events getting displayed when calendar loads first time. if change date lets either yesterday or tomorrow, calendar not displaying events.

i have implemented following events.

- (void)calendardaytimelineview:(tkcalendardayview *)calendarday didmovetodate:(nsdate *)date { //here logic pull data db server. //after calling method below. [self.dayview reloaddata]; }      - (nsarray *) calendardaytimelineview:(tkcalendardayview*)calendardaytimeline eventsfordate:(nsdate *)eventdate{     self.myappointments = nil;     nsfetchrequest *fetchrequest = [[[nsfetchrequest alloc] init] autorelease];     nsentitydescription *entity = [nsentitydescription                                    entityforname:@"tasks" inmanagedobjectcontext:self.managedobjectcontext];     [fetchrequest setentity:entity];     nserror *error;     self.myappointments = [self.managedobjectcontext executefetchrequest:fetchrequest error:&error];      if([eventdate compare:[nsdate datewithtimeintervalsincenow:-24*60*60]] == nsorderedascending) return @[];     if([eventdate compare:[nsdate datewithtimeintervalsincenow:24*60*60]] == nsordereddescending) return @[];      nsdatecomponents *info = [[nsdate date] datecomponentswithtimezone:calendardaytimeline.timezone];     info.second = 0;     nsmutablearray *ret = [nsmutablearray array];      for(tasks *apt in self.myappointments){          tkcalendardayeventview *event = [calendardaytimeline dequeuereusableeventview];         if(event == nil) event = [tkcalendardayeventview eventview];          event.identifier = nil;         event.titlelabel.text = apt.task_subject;          if ( [alltrim(apt.location) length] != 0 )         {             event.locationlabel.text = apt.location;         }          nsdate *startdate = apt.task_start;         nsdate *enddate = apt.task_end;          nscalendar *calendar = [nscalendar currentcalendar];         nsdatecomponents *components = [calendar components:(nshourcalendarunit | nsminutecalendarunit) fromdate:startdate];         nsinteger hour = [components hour];         nsinteger minute = [components minute];          info.hour = hour;         info.minute = minute;         event.startdate = [nsdate datewithdatecomponents:info];          components = [calendar components:(nshourcalendarunit | nsminutecalendarunit) fromdate:enddate];         hour = [components hour];         minute = [components minute];           info.hour = hour;         info.minute = minute;         event.enddate = [nsdate datewithdatecomponents:info];          [ret addobject:event];      }      return ret; } 

i have debugged code, data getting assigned events, not able view thing on calendar.

pls.. in fixing issue.

regards,

g.v.n.sandeep

there has way solve problem.

as see, in methods below:

- (void)viewdidload {     [super viewdidload];     self.title = nslocalizedstring(@"day view", @"");       self.data = @[   @[@"meeting 5 random dudes", @"five guys", @960, @0, @1000, @30],   @[@"unlimited bread rolls got me sprung", @"olive garden", @7, @0, @12, @0],   @[@"appointment", @"dennys", @15, @0, @18, @0],   @[@"hamburger bliss", @"wendys", @15, @0, @18, @0],   @[@"fishy fishy fishfelayyyyyyyy", @"mcdonalds", @5, @30, @6, @0],   @[@"turkey time...... oh wait", @"chick-fela", @14, @0, @19, @0],   @[@"greet king @ castle", @"burger king", @19, @30, @100, @0]];   } 

self.data loaded.

we can move loading process "viewwillappear" methods update data if writing. note that, there has no method add event specific date. can add event this: @[@"fishy fishy fishfelayyyyyyyy", @"mcdonalds", @48, @00, @50, @0]. @48 means event @ day after tomorrow.

so, first should calculate interval between specific date , self.dayview.date(today). following codes may help:

- (nsarray *)gettimefromnow:(nsdate *)startdate enddatetime:(nsdate *)enddate {   nsdate *todaydate = [nsdate date];   nstimeinterval startfromnowseconds = [startdate timeintervalsincedate:todaydate];   nstimeinterval endfromnowseconds = [enddate timeintervalsincedate:todaydate];    nsnumber *starthour = [nsnumber numberwithint:startfromnowseconds / (60 * 60)];   nsnumber *startminute = [nsnumber numberwithint:startfromnowseconds / 60 - starthour.intvalue * 60];    nsnumber *endhour = [nsnumber numberwithint:endfromnowseconds / (60 * 60)];   nsnumber *endminute = [nsnumber numberwithint:endfromnowseconds / 60 - endhour.intvalue * 60];    return @[starthour, startminute, endhour, endminute]; } 

below should commented:

if([eventdate compare:[nsdate datewithtimeintervalsincenow:-24*60*60]] == nsorderedascending) return @[]; if([eventdate compare:[nsdate datewithtimeintervalsincenow:24*60*60]] == nsordereddescending) return @[]; 

but pay attention timezone. think it's not easy return right time array calculated above.

more over, think essential necessary add method add event specific day in dayviewcontroller.

note: have coding, if time @900 hours now, event not showed in dayview... @500 hours works well.

what terrible designs here! waiting more complete dayviewcontroller ...


Comments

Popular posts from this blog

blackberry 10 - how to add multiple markers on the google map just by url? -

php - guestbook returning database data to flash -

delphi - Dynamic file type icon -