Reputation: 898
I have an array with the following information, retrieved from JSON:
Contents of events: (
"<CalendarModel> \n [title]: Arsenal v Man Utd\n [time]: (\n \"<Time> \\n [startTime]: 2013-04-28T17:00:00.000+02:...\n</CalendarModel>",
"<CalendarModel> \n [title]: Reading v QPR\n [time]: (\n \"<Time> \\n [startTime]: 2013-04-28T14:30:00.000+02:...\n</CalendarModel>",
"<CalendarModel> \n [title]: Newcastle v Liverpool\n [time]: (\n \"<Time> \\n [startTime]: 2013-04-27T18:30:00.000+02:...\n</CalendarModel>",
"<CalendarModel> \n [title]: TBC\n [time]: (\n \"<Time> \\n [startTime]: 2013-04-27T16:00:00.000+02:...\n</CalendarModel>",
"<CalendarModel> \n [title]: Man City v West Ham\n [time]: (\n \"<Time> \\n [startTime]: 2013-04-27T13:45:00.000+02:...\n</CalendarModel>",
"<CalendarModel> \n [title]: Man Utd v Aston Villa\n [time]: (\n \"<Time> \\n [startTime]: 2013-04-22T21:00:00.000+02:...\n</CalendarModel>",
"<CalendarModel> \n [title]: Liverpool v Chelsea\n [time]: (\n \"<Time> \\n [startTime]: 2013-04-21T17:00:00.000+02:...\n</CalendarModel>",
"<CalendarModel> \n [title]: Spurs v Man City\n [time]: (\n \"<Time> \\n [startTime]: 2013-04-21T14:30:00.000+02:...\n</CalendarModel>",
"<CalendarModel> \n [title]: Fulham v Arsenal\n [time]: (\n \"<Time> \\n [startTime]: 2013-04-20T16:00:00.000+02:...\n</CalendarModel>",
"<CalendarModel> \n [title]: West Ham v Man Utd\n [time]: (\n \"<Time> \\n [startTime]: 2013-04-17T20:45:00.000+02:...\n</CalendarModel>",
"<CalendarModel> \n [title]: Arsenal v Everton\n [time]: (\n \"<Time> \\n [startTime]: 2013-04-16T20:45:00.000+02:...\n</CalendarModel>",
"<CalendarModel> \n [title]: Chelsea v Man City\n [time]: (\n \"<Time> \\n [startTime]: 2013-04-14T17:00:00.000+02:...\n</CalendarModel>",
"<CalendarModel> \n [title]: Stoke v Man Utd\n [time]: (\n \"<Time> \\n [startTime]: 2013-04-14T15:00:00.000+02:...\n</CalendarModel>",
"<CalendarModel> \n [title]: Millwall v Wigan\n [time]: (\n \"<Time> \\n [startTime]: 2013-04-13T18:15:00.000+02:...\n</CalendarModel>",
"<CalendarModel> \n [title]: Reading v Liverpool\n [time]: (\n \"<Time> \\n [startTime]: 2013-04-13T16:00:00.000+02:...\n</CalendarModel>",
"<CalendarModel> \n [title]: FC Basel v Spurs\n [time]: (\n \"<Time> \\n [startTime]: 2013-04-11T21:05:00.000+02:...\n</CalendarModel>",
"<CalendarModel> \n [title]: Rubin Kazan v Chelsea\n [time]: (\n \"<Time> \\n [startTime]: 2013-04-11T21:05:00.000+02:...\n</CalendarModel>",
"<CalendarModel> \n [title]: Juventus v Bayern Munich\n [time]: (\n \"<Time> \\n [startTime]: 2013-04-10T20:45:00.000+02:...\n</CalendarModel>",
"<CalendarModel> \n [title]: Barcelona v Paris St Germain\n [time]: (\n \"<Time> \\n [startTime]: 2013-04-10T20:45:00.000+02:...\n</CalendarModel>",
"<CalendarModel> \n [title]: Everton v Stoke\n [time]: (\n \"<Time> \\n [startTime]: 2013-03-30T18:30:00.000+01:...\n</CalendarModel>",
"<CalendarModel> \n [title]: Swansea v Spurs\n [time]: (\n \"<Time> \\n [startTime]: 2013-03-30T16:00:00.000+01:...\n</CalendarModel>",
"<CalendarModel> \n [title]: Sunderland v Man Utd\n [time]: (\n \"<Time> \\n [startTime]: 2013-03-30T13:45:00.000+01:...\n</CalendarModel>",
"<CalendarModel> \n [title]: Ireland v Austria\n [time]: (\n \"<Time> \\n [startTime]: 2013-03-26T20:45:00.000+01:...\n</CalendarModel>",
"<CalendarModel> \n [title]: Denmark v Bulgaria\n [time]: (\n \"<Time> \\n [startTime]: 2013-03-26T20:15:00.000+01:...\n</CalendarModel>",
"<CalendarModel> \n [title]: Sweden v Ireland\n [time]: (\n \"<Time> \\n [startTime]: 2013-03-22T19:45:00.000+01:...\n</CalendarModel>",
"<CalendarModel> \n [title]: Dennis McLaughlin\n [time]: (\n \"<Time> \\n [startTime]: 2013-03-31T22:30:00.000+02:...\n</CalendarModel>",
"<CalendarModel> \n [title]: Lee Thomas\n [time]: (\n \"<Time> \\n [startTime]: 2013-03-30T23:00:00.000+01:...\n</CalendarModel>",
"<CalendarModel> \n [title]: Lee Thomas\n [time]: (\n \"<Time> \\n [startTime]: 2013-03-29T22:30:00.000+01:...\n</CalendarModel>",
"<CalendarModel> \n [title]: Lee Thomas\n [time]: (\n \"<Time> \\n [startTime]: 2013-03-28T21:30:00.000+01:...\n</CalendarModel>",
"<CalendarModel> \n [title]: Lee Thomas\n [time]: (\n \"<Time> \\n [startTime]: 2013-03-27T21:30:00.000+01:...\n</CalendarModel>",
"<CalendarModel> \n [title]: Pat Kelly\n [time]: (\n \"<Time> \\n [startTime]: 2013-02-14\\n [endTime]: 2...\n</CalendarModel>",
"<CalendarModel> \n [title]: Ray Weaver\n [time]: (\n \"<Time> \\n [startTime]: 2013-01-31\\n [endTime]: 2...\n</CalendarModel>",
"<CalendarModel> \n [title]: Take the Biscuit\n [time]: (\n \"<Time> \\n [startTime]: 2013-01-24\\n [endTime]: 2...\n</CalendarModel>",
"<CalendarModel> \n [title]: The McLaughlin Clan\n [time]: (\n \"<Time> \\n [startTime]: 2013-01-18\\n [endTime]: 2...\n</CalendarModel>",
"<CalendarModel> \n [title]: Local Artist\n [time]: (\n \"<Time> \\n [startTime]: 2013-01-17\\n [endTime]: 2...\n</CalendarModel>",
"<CalendarModel> \n [title]: Richie Vargas\n [time]: (\n \"<Time> \\n [startTime]: 2013-01-10\\n [endTime]: 2...\n</CalendarModel>",
"<CalendarModel> \n [title]: Tom Valbak\n [time]: (\n \"<Time> \\n [startTime]: 2012-12-28\\n [endTime]: 2...\n</CalendarModel>",
"<CalendarModel> \n [title]: Tom Brakl\n [time]: (\n \"<Time> \\n [startTime]: 2012-12-25\\n [endTime]: 2...\n</CalendarModel>",
"<CalendarModel> \n [title]: Tom Brakl\n [time]: (\n \"<Time> \\n [startTime]: 2012-12-23\\n [endTime]: 2...\n</CalendarModel>",
"<CalendarModel> \n [title]: Dessie Higgins\n [time]: (\n \"<Time> \\n [startTime]: 2012-12-20\\n [endTime]: 2...\n</CalendarModel>",
"<CalendarModel> \n [title]: Pat Kelly\n [time]: (\n \"<Time> \\n [startTime]: 2012-12-13\\n [endTime]: 2...\n</CalendarModel>",
"<CalendarModel> \n [title]: Rich Vargas\n [time]: (\n \"<Time> \\n [startTime]: 2012-12-06\\n [endTime]: 2...\n</CalendarModel>",
"<CalendarModel> \n [title]: Lee Thomas\n [time]: (\n \"<Time> \\n [startTime]: 2012-11-22\\n [endTime]: 2...\n</CalendarModel>",
"<CalendarModel> \n [title]: International Jam Session\n [time]: (\n \"<Time> \\n [startTime]: 2012-09-03T21:00:00.000+02:...\n</CalendarModel>",
"<CalendarModel> \n [title]: Kevin McKernan\n [time]: (\n \"<Time> \\n [startTime]: 2012-08-30\\n [endTime]: 2...\n</CalendarModel>",
"<CalendarModel> \n [title]: Lee Thomas\n [time]: (\n \"<Time> \\n [startTime]: 2012-08-09\\n [endTime]: 2...\n</CalendarModel>",
"<CalendarModel> \n [title]: Ray Weaver\n [time]: (\n \"<Time> \\n [startTime]: 2012-07-19\\n [endTime]: 2...\n</CalendarModel>",
"<CalendarModel> \n [title]: Gray Hawthorn\n [time]: (\n \"<Time> \\n [startTime]: 2012-07-05\\n [endTime]: 2...\n</CalendarModel>",
"<CalendarModel> \n [title]: Jimmy Walsh\n [time]: (\n \"<Time> \\n [startTime]: 2012-06-07\\n [endTime]: 2...\n</CalendarModel>",
"<CalendarModel> \n [title]: Take The Biscuit\n [time]: (\n \"<Time> \\n [startTime]: 2012-11-29\\n [endTime]: 2...\n</CalendarModel>"
I am trying to create the tableview with the startTime (only the date, not the hours and minutes) as the titleForHeaderInSection. The NSMutableArray containing the events is called events
Can anybody help me in the right direction. As it stands now, i am getting data back with no headers, and just the events. I have the following right now, but I am still testing. This at least creates a header called Test
#pragma mark - table methods
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return events.count;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 1;
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
CalendarModel* event = events[section];
NSString *dato = [[event.time objectAtIndex:0] startTime];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyy-MM-dd'T'HH:mm:ss.SSSzzz";
NSDate *gmtDate = [formatter dateFromString: dato];
formatter.dateFormat = @"dd-MM-yyyy";
dato = [formatter stringFromDate:gmtDate];
return dato;
}
-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
CalendarModel* event = events[indexPath.row];
NSString *dato = [[event.time objectAtIndex:0] startTime];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyy-MM-dd'T'HH:mm:ss.SSSzzz";
NSDate *gmtDate = [formatter dateFromString: dato];
formatter.dateFormat = @"HH:mm";
dato = [formatter stringFromDate:gmtDate];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"SportCell" forIndexPath:indexPath];
cell.textLabel.text = [NSString stringWithFormat:@"%@",
event.title
];
cell.detailTextLabel.text = dato;
return cell;
}
Have edited the code above. It now works, but it is showing the same game every time. As if it always takes the first one, and shows that. I think the problem is in the
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 1;
}
method.
Upvotes: 0
Views: 684
Reputation: 6015
I think you used Uppercase letter in the property Title . In the array it is simply 'title'
Try the below lines of code.
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
return [[events objectAtIndex: section] objectForKey: @"title"];
}
CalendarModel
classOne main problem of your implementation is , your header will always display first title as header , Since you have only 1 section
If I am rite you need to implement like this
#pragma mark - table methods
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return events.count;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 1;
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
return [[events objectAtIndex: section] objectForKey: @"title"];
}
-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
CalendarModel* event = events[indexPath.section];
NSString *dato = [[event.time objectAtIndex:0] startTime];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyy-MM-dd'T'HH:mm:ss.SSSzzz";
//formatter.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:3600];
//formatter.calendar = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];
//formatter.locale = [[NSLocale alloc]initWithLocaleIdentifier:@"en_GB"];
NSDate *gmtDate = [formatter dateFromString: dato];
formatter.dateFormat = @"dd-MM-yyyy HH:mm";
dato = [formatter stringFromDate:gmtDate];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"SportCell" forIndexPath:indexPath];
cell.textLabel.text = [NSString stringWithFormat:@"%@",
event.title
];
cell.detailTextLabel.text = dato;
return cell;
}
Upvotes: 0
Reputation: 3510
Your json data give me error in http://json.parser.online.fr/
Try this :
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
CalendarModel* event = events[section]; // i think CalendarModel is a class in which you store yor json data one by one.
return event.Title; // In event class you have to save title;
//return [[events objectAtIndex: section] objectForKey: @"Title"];
}
Upvotes: 1