Вам нужно переместить присвоение текста из условного.
После того, как первые 3 ячейки будут выделены / инициализированы, вы не обязательно получите больше ячеек.
Вы присваиваете cell.textLabel.text, только если вы создаете новую ячейку.
Логика должна быть:
статический NSString * CellIdentifier = @ "Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
if ([indexPath section] == ENGINEER_ID) {
cell.textLabel.text = @"Engineer";
} else if ([indexPath section] == FIREMAN_ID) {
cell.textLabel.text = @"Fireman";
} else if ([indexPath section] == CONDUCTOR_ID) {
cell.textLabel.text = @"Conductor";
} else if ([indexPath section] == TRAINMASTER_ID) {
cell.textLabel.text = @"Trainmaster";
}
И, конечно, после того, как вы устали писать каскадные операторы if, вы можете использовать switch ([indexPath section])