I am making a form inside a grouped table. In this form, I have UIswitches and text fields. But after scrolling, the cell styles change.
Here is my cellForRowAtIndex
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = nil; static NSString *MyIdentifier = @"GenericCell"; cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier] ; } NSString *text = nil; if(indexPath.section == CREDENTIALS_SECTION){ if (indexPath.row == 0) { NSLog(@"tot hier login"); UITextField *login = [[UITextField alloc] initWithFrame:CGRectMake(110, 10, 185, 30)]; login.adjustsFontSizeToFitWidth = YES; login.placeholder = @" example@gmail.com "; login.keyboardType = UIKeyboardTypeEmailAddress; login.returnKeyType = UIReturnKeyNext; login.backgroundColor = [UIColor clearColor]; login.tag = 0; login.delegate = self; [login setEnabled: YES]; [cell addSubview:login]; }else if (indexPath.row == 1){ NSLog(@"tot hier pass"); UITextField *pass = [[UITextField alloc] initWithFrame:CGRectMake(110, 10, 185, 30)]; pass.adjustsFontSizeToFitWidth = YES; pass.placeholder = @"Required"; pass.keyboardType = UIKeyboardTypeDefault; pass.returnKeyType = UIReturnKeyDone; pass.secureTextEntry = YES; pass.backgroundColor = [UIColor clearColor]; pass.tag = 0; pass.delegate = self; [cell addSubview:pass]; } if (indexPath.row == 0) { // Email text = @"Email"; } else if(indexPath.row == 1) { text = @"Password"; } }else if(indexPath.section == METHODS_SECTION){ UISwitch *toggleSwitch = [[UISwitch alloc]initWithFrame:CGRectMake(220, 10, 100, 30)]; toggleSwitch.tag = indexPath.row; [toggleSwitch addTarget:self action:@selector(toggleSwitched:) forControlEvents:UIControlEventValueChanged]; [cell addSubview:toggleSwitch]; if (indexPath.row == 0) { // Web text = @"Web applicatie"; } else if(indexPath.row == 1) { //Mobile text = @"Mobiele applicatie"; } else if(indexPath.row == 2) { //Mail text = @"E-mail"; } }else if(indexPath.section == PHONE_SECTION){ UITextField *phoneText = [[UITextField alloc] initWithFrame:CGRectMake(20, 10, 185, 30)]; phoneText.adjustsFontSizeToFitWidth = YES; phoneText.font = [UIFont fontWithName:@"Arial-BoldMT" size:18]; phoneText.keyboardType = UIKeyboardTypeNumberPad; phoneText.delegate = self; phoneText.textColor = [UIColor blackColor]; phoneText.text = _person.phone; [cell addSubview:phoneText]; }else if(indexPath.section == REMARK_SECTION){ UITextView *textView = [[UITextView alloc]initWithFrame:CGRectMake(20, 10, 280, 260)]; textView.text = _person.remark; textView.delegate = self; textView.font = [UIFont fontWithName:@"Arial" size:15.0]; textView.backgroundColor = [UIColor clearColor]; [cell addSubview:textView]; text = @""; }else if(indexPath.section == BUTTON_SECTION){ cell.backgroundColor = [UIColor redColor]; text = @"test"; } cell.textLabel.text = text; return cell; }
After some searching, I found that more people are facing this problem. And that the problem lies in this piece of code.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = nil; static NSString *MyIdentifier = @"GenericCell"; cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier] ; } NSString *text = nil;
But I did not find a solution for this. Hope anyone can help!
Yours faithfully!
Explanation
Oké, so here you see a screenshot of my form. below I have a red cell (save button), when I scroll down, other cells get a red background. And some cells, text property are changing. 
source share