Je veux un UISwitch dans TableViewCell pour changer le texte de 'Actif' à 'Désactivé' et vice versa quand il est commuté mais quand le commutateur change, toutes les données dans ma vue de table disparaissent . J'utilise 'recharger les données' car je ne sais pas comment changer le texte d'une cellule spécifique. FYI, 'article actuel' est une entité de données de base avec une propriété BOOL 'itemEnabled'.UISwitch dans TableViewCell - Changer le texte de la cellule lors du changement
Le commutateur n'est visible que pendant le 'mode d'édition'.
J'ai un UISwitch dans une vue cellule de tableau dans mon 'contrôleur vue détaillée':
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = nil;
NSString *cellDetail = nil;
static NSString *EnabledCellIdentifier = @"Enabled";
cell = [tableView dequeueReusableCellWithIdentifier:EnabledCellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:EnabledCellIdentifier] autorelease];
UISwitch* actSwitch = [[UISwitch alloc] initWithFrame:CGRectZero];
[cell setEditingAccessoryView:actSwitch];
[actSwitch addTarget:self action:@selector(actSwitchChanged:) forControlEvents:UIControlEventValueChanged];
if ([[currentItem valueForKey:@"itemEnabled"] boolValue]) {
cellDetail = @"Active";
actSwitch.on = YES;
} else {
cellDetail = @"Disabled";
actSwitch.on = NO;
}
[actSwitch release];
cell.textLabel.text = cellDetail;
return cell;
}
J'ai une méthode pour recevoir l'action:
- (void)actSwitchChanged:(id)sender {
UISwitch* swEnabled = (UISwitch*)sender;
NSManagedObjectContext* itemContext = [currentItem managedObjectContext];
currentItem.itemEnabled = [NSNumber numberWithBool:swEnabled.on];
NSError *error = nil;
if (![itemContext save:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
}
Je ne vois pas où vous utilisez reloadData – Brian