I have a weird problem (at least in my opinion). When I add a UISwitch to my table view, the switch changes cell automatically when the user scrolls the table view. Below is the code on how I create the UISwitch for the tableview.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
//NSLog(@"This is what we are looking for %@ %@", checkUsername, checkPassword);
// Configure the cell...
NSDictionary *dictionary = [listOfItems objectAtIndex:indexPath.section];
NSArray *array =[dictionary objectForKey:@"Settings"];
NSString * cellValue = [array objectAtIndex:indexPath.row];
static NSString *CellIdentifier = @"Cell";
NSUInteger section = [indexPath section];
NSUInteger row = [indexPath row];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
cell.accessoryView = nil;
if (!cell) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier] autorelease];
cell.textLabel.adjustsFontSizeToFitWidth = YES;
//switcher.on = [[NSUserDefaults standardUserDefaults]boolForKey:@"Settings"];
if (section == 1)
{
UISwitch *switchView = [[UISwitch alloc] init];
cell.accessoryView = switchView;
[switchView setOn:YES animated:NO];
[switchView setTag:[indexPath row]];
[switchView addTarget:self action:@selector(switchWasChangedFromEnabled:) forControlEvents:UIControlEventValueChanged];
//[self.tableView reloadData];
[switchView release];
}
}
return cell;
}
Can someone please let me know why the switches keep moving out of the designated cells and also a possible remedy.
Justin Gallagher suggested this:
It’s happening because you’re cacheing your cells and reusing them. Sometimes the cell with the switch is getting reused in another place. Try setting a different identifier for the cell with the switch.
But can someone tell me how I can set different identifier for each cell?
Cheers,
iSee
It’s happening because you’re cacheing your cells and reusing them. Sometimes the cell with the switch is getting reused in another place. Try setting a different identifier for the cell with the switch.