Reputation: 31
Thanks in advance for help, I'm having trouble wrapping my head around the code. I'm trying to divide an existing uitable that works perfectly well into 4 sections. As you can see I have 4 sections, various amounts of rows in each section and names for each section. When compiled the sections are there properly BUT the cells are repeated. I've tried various methods from other posts on the subject as well as googled info but I keep getting loads of errors. If anyone could show me what I am leaving out I would appreciate it! Thanks.
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
// Return the number of sections.
return 4;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
switch (section) {
case 0:
return 2;
break;
case 1:
return 3;
break;
case 2:
return 2;
break;
case 3:
return 1;
break;
}
return 0;
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
NSString *sectionHeader = nil;
if(section == 0) {
sectionHeader = @"Section 1";
}
if(section == 1) {
sectionHeader = @"Section 2";
}
if(section == 2) {
sectionHeader = @"Section 3";
}
if(section == 3) {
sectionHeader = @"Section 4";
}
return sectionHeader;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
[cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator];
[cell.textLabel setNumberOfLines:2];
}
cell.textLabel.font = [UIFont systemFontOfSize:14.0];
cell.detailTextLabel.font = [UIFont systemFontOfSize:11.5];
switch (indexPath.row) {
// I would like these in Section One
case 0:
[cell.textLabel setText:@"Cell one"];
[cell.detailTextLabel setText:@"subtext one"];
break;
case 1:
[cell.textLabel setText:@"Cell two"];
[cell.detailTextLabel setText:@"subtext two"];
break;
// And these in Section Two
case 2:
[cell.textLabel setText:@"Cell three"];
[cell.detailTextLabel setText:@"subtext three"];
break;
case 3:
[cell.textLabel setText:@"Cell four"];
[cell.detailTextLabel setText:@"subtext four"];
break;
case 4:
[cell.textLabel setText:@"Cell five"];
[cell.detailTextLabel setText:@"subtext five"];
break;
// And these in Section Three
case 5:
[cell.textLabel setText:@"Cell six"];
[cell.detailTextLabel setText:@"subtext six"];
break;
case 6:
[cell.textLabel setText:@"Cell seven"];
[cell.detailTextLabel setText:@"subtext seven"];
break;
// And this in Section four
case 7:
[cell.textLabel setText:@"Cell eight"];
[cell.detailTextLabel setText:@"subtext eight"];
break;
default:
break;
}
return cell;
}
Upvotes: 1
Views: 762
Reputation: 799
you have to add a
switch (indexPath.section)
in the cellForRowAtIndexPath.
or an if-else clause.
something like this:
if (indexPath.section == 0 && indexPath.row == 0)
{
// for the first row in the first section
}
else if (indexPath.section == 3 && indexPath.row == 2)
{
// for the 4 section and 3 row
}
Upvotes: 1