I have two sections, A-M and N-Z.
I noticed that if I have the same number of cities in each section, there won’t be a problem. However, the program will crash if I don’t have the same number of cities.
The error is
-[__NSArrayM objectAtIndex:]: index 2 beyond bounds [0 .. 0]’
This is my code when the error generates:
- (void)viewDidLoad
{
[super viewDidLoad];
self.title = @"Region";
self.tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped];
AM = [[NSMutableArray alloc] init];
NZ = [[NSMutableArray alloc] init];
[AM addObject: @"Bologna"];
[AM addObject: @"Florence"];
[AM addObject: @"Milan"];
[NZ addObject: @"Naples"];
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
// Return the number of sections.
return 2;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
switch (section) {
case 0:
return [AM count];
break;
case 1:
return [NZ count];
break;
default:
return section;
break;
}
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
// Configure the cell...
NSInteger section = [indexPath section];
switch (section) {
case 0:
[cell.textLabel setText: [AM objectAtIndex: [indexPath row]]];
break;
case 1:
[cell.textLabel setText: [NZ objectAtIndex: [indexPath row]]];
break;
default:
break;
}
return cell;
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
switch (section) {
case 0:
return @"A-M";
break;
case 1:
return @"N-Z";
break;
default:
break;
}
return nil;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString * AMPath = self.luzonRegion [indexPath.row];
NSString * NZPath = self.visayasRegion [indexPath.row];
switch (indexPath.section) {
case 0:
cityController.title = luzonRegionPath;
NSLog(@"Selected city: %@", AMPath);
break;
case 1:
cityController.title = visayasRegionPath;
NSLog(@"Selected city: %@", NZPath);
break;
default:
break;
}
[[self navigationController] pushViewController:cityController animated:YES];
}
you try like this,
it is working fine…..