Saturday, 15 February 2014

iphone - Selecting events using Kal calendar -



iphone - Selecting events using Kal calendar -

i'm adding calendar view app using kal calendar having problems implementing didselectrowatindexpath method on event list. force view controller when user selects event given day. i've tried putting method in "kalview.m", "kalviewcontroller.m", , "kaldatasource.m", none recognized. appropriate place phone call such method?

i had similar issue once, here how implemented it.

#import <mtdates/nsdate+mtdates.h> #import <objectivesugar/objectivesugar.h> #import <uiimageview+webcache.h> #import "eventsviewcontroller.h" #import "eventdetailsviewcontroller.h" #import "eventcell.h" #import "event.h" #import "kalviewcontroller.h" #import "calendarviewcontroller.h" @implementation eventsviewcontroller - (id)initwithevents:(nsarray *)_events { self = [super init]; events = _events; homecoming self; } - (void)viewdidload { [super viewdidload]; [self listupdated]; [self addcalendarview]; } - (void)listupdated { nsmutablearray *allevents = [nsmutablearray array]; [allevents addobjectsfromarray:events]; nsarray *sortedarray = [allevents sortedarrayusingcomparator:^nscomparisonresult(event *obj1, event *obj2) { homecoming [obj1.date compare:obj2.date]; }]; _allevents = sortedarray; } - (nsinteger)tableview:(uitableview *)tableview numberofrowsinsection:(nsinteger)section { homecoming [_allevents count]; } - (uitableviewcell*)tableview:(uitableview *)tableview cellforrowatindexpath:(nsindexpath *)indexpath { //custom table cell (eventcell view i'm initialising rows with) event *event = _allevents[indexpath.row]; nsstring *reuseidentifier = [nsstring stringwithformat:@"cell%@%@", event.venue.identifier, event.identifier]; eventcell *cell = (eventcell*) [tableview dequeuereusablecellwithidentifier:reuseidentifier]; if (!cell) { cell = [eventcell createdetailedcellwithreuseidentifier:reuseidentifier]; cell.namelabel.text = event.name; } homecoming cell; } - (void)tableview:(uitableview *)tableview didselectrowatindexpath:(nsindexpath *)indexpath { event *event = _allevents[indexpath.row]; eventdetailsviewcontroller *controller = [[eventdetailsviewcontroller alloc] initwithevent:event]; [self.navigationcontroller pushviewcontroller:controller animated:yes]; } - (void) addcalendarview{ _calenderview = [[kalviewcontroller alloc] initwithselecteddate:[nsdate date]]; [[self.view viewwithtag:2] addsubview:_calenderview.view]; /* depends on requirements*/ _calenderview.view.tag = 200; /* not necessary */ [_calenderview.view setframe:self.view.bounds]; _calenderview.datasource = self; _calenderview.delegate = self; } - (void)loaditemsfromdate:(nsdate *)fromdate todate:(nsdate *)todate { //nslog(@"%@, %@", fromdate, todate); // filter , pass array events tableview [self filterbydateselected:todate]; } -(void)presentingdatesfrom:(nsdate *)fromdate to:(nsdate *)todate delegate:(id<kaldatasourcecallbacks>)delegate { /** when selecting different month **/ } - (void)removeallitems { nslog(@"items removed"); // remove previous items tableview } -(void) filterbydateselected: (nsdate *)selecteddate { nsdateformatter *dateformat = [[nsdateformatter alloc] init]; [dateformat setdateformat:@"yyyy-mm-dd"]; nsstring *thedate = [dateformat stringfromdate:selecteddate]; nsdate *_date = [nsdate datefromstring:thedate usingformat:@"yyyy-mm-dd"]; // filter table selecteddate nsarray *_datefilteredevents = _allevents; _datefilteredevents = [_allevents filteredarrayusingpredicate:[nspredicate predicatewithblock:^bool(event *evaluatedevent, nsdictionary *bindings) { if ([evaluatedevent.date isequaltodate:_date]) { homecoming yes; } homecoming no; }]]; nslog(@"%@", _datefilteredevents); // uncomment next line if want display list in controller //[self showeventsbydate:_datefilteredevents]; // or else refresh table after updating list _allevents = _datefilteredevents; [_tableview reloaddata]; } - (void) showeventsbydate:(nsarray*)events { if (events.count > 0) { calendarviewcontroller *_controller = [[calendarviewcontroller alloc] initwitheventarray:events]; [self.navigationcontroller pushviewcontroller:_controller animated:yes]; } } - (void) removecalenderview{ [_calenderview.view removefromsuperview]; } @end

iphone uitableview kal

No comments:

Post a Comment