Q:

Cells overlapping in table view

I am trying to achieve a UITableView with cells and textfields but the cells keep on overlapping and textfields are jumping from one section to another. 
Can someone please check my code for any mistake that I have done?
listForItemsinfo =[[NSArray alloc]initWithObjects:@"Name",@"Price", nil];
listForBrandYear  =[[NSArray alloc] initWithObjects:@"Year",@"Alfa",@"aston",@"audi",@"bentley",@"BMW",@"Cadillac",@"Chevrolet",@"Ferrari",@"Ford",@"Jaguar",@"Jeep",@"Kia",@"Landrover",@"Mazda",@"Mercedes",@"Mitsubishi",@"Nissan",@"Porshe",@"Subaru", nil];

listForkeywords  =[[NSArray alloc] initWithObjects:@"KeyWord1",@"Keyword2", nil];
listForcarType  =[[NSArray alloc] initWithObjects:@"Sedan",@"Convertible",@"Coupe",@"Heatchback", nil];
listForItemsCategory =[[NSArray alloc] initWithObjects:@"cat1",@"cat2",@"cat3",@"cat4",@"cat5",@"cat6", nil];

sections = [[NSArray alloc]initWithObjects:@"Item's info",@"Brand, Year",@"Keywords",@"Car Type",@"Category", nil];
listOfsections =[[NSArray alloc]initWithObjects:listForItemsinfo,listForBrandYear,listForkeywords,listForcarType,listForItemsCategory, nil];

- (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];

    if (indexPath.section == 0) {

            // Add a UITextField
        UITextField *textField = [[UITextField alloc] init];
        // Set a unique tag on each text field
        textField.tag = 1+ indexPath.row;
        // Add general UITextAttributes if necessary
        textField.enablesReturnKeyAutomatically = YES;
        textField.autocorrectionType = UITextAutocorrectionTypeNo;
        textField.autocapitalizationType = UITextAutocapitalizationTypeNone;
        [cell.contentView addSubview:textField];

    }else if (indexPath.section == 1 ){
        if (indexPath.row==0) {

        UITextField *textField = [[UITextField alloc] init];
        // Set a unique tag on each text field
        textField.tag = 2+ indexPath.row;
        // Add general UITextAttributes if necessary
        textField.enablesReturnKeyAutomatically = YES;
        textField.autocorrectionType = UITextAutocorrectionTypeNo;
        textField.autocapitalizationType = UITextAutocapitalizationTypeNone;
        [cell.contentView addSubview:textField];
        }
    }else if (indexPath.section == 2 ){
        if (indexPath.row==0 | indexPath.row ==1) {

            UITextField *textField = [[UITextField alloc] init];
            // Set a unique tag on each text field
            textField.tag = 3+ indexPath.row;
            // Add general UITextAttributes if necessary
            textField.enablesReturnKeyAutomatically = YES;
            textField.autocorrectionType = UITextAutocorrectionTypeNo;
            textField.autocapitalizationType = UITextAutocapitalizationTypeNone;
            [cell.contentView addSubview:textField];
        }else{

        }
    }
}
//cell.textLabel.text=@"wqewq";
//cell.textLabel.text = [[listOfsections objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];

[self configureCell:cell atIndexPath:indexPath];

return cell;
}

- (void)configureCell:(UITableViewCell *)theCell atIndexPath:(NSIndexPath *)indexPath {

if (indexPath.section == 0) {

    // Get the text field using the tag
    UITextField *textField = (UITextField *)[theCell.contentView viewWithTag:1+indexPath.row];
    // Position the text field within the cell bounds
    CGRect cellBounds = theCell.bounds;
    CGFloat textFieldBorder = 10.f;
    // Don't align the field exactly in the vertical middle, as the text
    // is not actually in the middle of the field.
    CGRect aRect = CGRectMake(textFieldBorder, 9.f, CGRectGetWidth(cellBounds)-(2*textFieldBorder), 31.f );

    textField.frame = aRect;

    theCell.textLabel.text = NULL;

    // Configure UITextAttributes for each field
    if(indexPath.section == 0 & indexPath.row == 0) {
        textField.placeholder = @"Name";
        textField.returnKeyType = UIReturnKeyNext;
        textField.autocapitalizationType = UITextAutocapitalizationTypeWords;
    } else if(indexPath.section == 0 & indexPath.row == 1) {
        textField.placeholder = @"Price";
        textField.returnKeyType = UIReturnKeyNext;
        textField.keyboardType = UIKeyboardTypeNumberPad;
    }else if (indexPath.section ==0 & indexPath.row >1){
        [textField removeFromSuperview];
    }
}else if (indexPath.section == 1) {

    // Get the text field using the tag
    UITextField *textField = (UITextField *)[theCell.contentView viewWithTag:2+indexPath.row];
    // Position the text field within the cell bounds
    CGRect cellBounds = theCell.bounds;
    CGFloat textFieldBorder = 10.f;
    // Don't align the field exactly in the vertical middle, as the text
    // is not actually in the middle of the field.
    CGRect aRect = CGRectMake(textFieldBorder, 9.f, CGRectGetWidth(cellBounds)-(2*textFieldBorder), 31.f );

    textField.frame = aRect;

    // Configure UITextAttributes for each field
    if(indexPath.section == 1 & indexPath.row == 0) {
        textField.placeholder = @"Year";
        textField.returnKeyType =UIReturnKeyDone;
        textField.autocapitalizationType = UIKeyboardTypeNumberPad;
        theCell.textLabel.text = NULL;
    }else if(indexPath.section == 1 & indexPath.row != 0){
        [textField removeFromSuperview];
        theCell.textLabel.text = [[listOfsections objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];

    }
}else if (indexPath.section == 2) {

    // Get the text field using the tag
    UITextField *textField = (UITextField *)[theCell.contentView viewWithTag:3+indexPath.row];
    // Position the text field within the cell bounds
    CGRect cellBounds = theCell.bounds;
    CGFloat textFieldBorder = 10.f;
    // Don't align the field exactly in the vertical middle, as the text
    // is not actually in the middle of the field.
    CGRect aRect = CGRectMake(textFieldBorder, 9.f, CGRectGetWidth(cellBounds)-(2*textFieldBorder), 31.f );

    textField.frame = aRect;

    // Configure UITextAttributes for each field
    if(indexPath.section == 2 & indexPath.row == 0) {
        textField.placeholder = @"Keyword1";
        textField.returnKeyType =UIReturnKeyDone;
        textField.autocapitalizationType = UIKeyboardTypeNumberPad;
    }else if(indexPath.section == 2 & indexPath.row == 1) {
        textField.placeholder = @"Keyword2";
        textField.returnKeyType =UIReturnKeyDone;
        textField.autocapitalizationType = UIKeyboardTypeNumberPad;
    }else{}
}

}

FIXED ! if anyone has the same problem (working code)
static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }
    // Add a UITextField
    UITextField *textField = [[UITextField alloc] init];
    // Set a unique tag on each text field
    textField.tag = 1 + indexPath.row;
    textField.delegate=self;
    // Add general UITextAttributes if necessary
    textField.enablesReturnKeyAutomatically = YES;
    textField.autocorrectionType = UITextAutocorrectionTypeNo;
    textField.autocapitalizationType = UITextAutocapitalizationTypeNone;
    // Position the text field within the cell bounds
    CGRect cellBounds = cell.bounds;
    CGFloat textFieldBorder = 10.f;
    // Don't align the field exactly in the vertical middle, as the text
    // is not actually in the middle of the field.
    CGRect aRect = CGRectMake(textFieldBorder, 9.f, CGRectGetWidth(cellBounds)-(2*textFieldBorder), 31.f );

    textField.frame = aRect;

    textField.placeholder = @"Search for an item";
    textField.returnKeyType = UIReturnKeyDefault;
    textField.autocapitalizationType = UITextAutocapitalizationTypeWords;

        if ((indexPath.section == 0) & (indexPath.row==0)) {

            [cell.contentView addSubview:textField];
            cell.textLabel.text=NULL;
        }else{
            [textField removeFromSuperview];
            cell.textLabel.text = [[sections objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];
        }

A:

The table won't make cells overlap, but cells do get reused. Your problem is that your only configuring the cell when you initialize it. In fact, you need to do that configuration whether you create a new cell or get an old one from -dequeueReusableCellWithIdentifier:.
Perhaps you were thinking that a table view saves every cell that you give it? That's not how it works... Reusable cells mean that a table only needs about as many cells as can be displayed at once. As you scroll the view, the cells that scroll off the top or bottom are recycled as new cells for new content. You're not setting the new content, though, so the old content shows up instead.
Add a close bracket after the first line of your if, so that the rest of the code is always executed:
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}   

if (indexPath.section == 0) {

