2010-01-30 5 views
0

J'ai un dernier problème qui me tue. Je joue avec un projet plus ancien qui a utilisé la méthode tableView:accessoryTypeForRowWithIndexPath, dont j'essaye de réécrire l'application sans elle.iphone (objectif-c) erreur de modification d'accessoire

J'ai supprimé la méthode tableView:accessoryTypeForRowWithIndexPath, mais ma solution ne fonctionne pas encore.

Le problème est que maintenant, quand j'appuie sur le bouton 'Edit' de ma vue DetailViewController, les types d'accessoires 'editing' n'apparaissent pas. Ci-dessous est mon code actuel, et j'ai également inclus le project file pour cela, parce que je suis désespéré pour une solution qui fonctionne.

Ma question est, quel code dois-je changer, pour obtenir l'accessoire à changer, et aucun autre effet. (Je sais que le fonctionne RootViewController, mais comment puis-je obtenir la table DetailViewController pour faire la même chose?)

Cordialement, @norskben

Fichier projet Télécharger:Get it here.

setEditing

- (void)setEditing:(BOOL)editing animated:(BOOL)animated { 
    [super setEditing:editing animated:animated]; 
    [self.navigationItem setHidesBackButton:editing animated:animated]; 

    [tableView reloadData]; 
} 

cellForRowAtIndexPath

- (UITableViewCell *)tableView:(UITableView *)tblView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    static NSString *CellIdentifier = @"Cell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease]; 
     cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton; 
     cell.editingAccessoryType = UITableViewCellAccessoryCheckmark; 
    } 

    switch(indexPath.section) { 
     case 0: 
      cell.textLabel.text = coffeeObj.coffeeName; 
      break; 
     case 1: 
      cell.textLabel.text = [NSString stringWithFormat:@"%@", coffeeObj.price]; 
      break; 
    } 

    return cell; 
} 

fichier de projet Télécharger:Get it here.

Répondre

1

Dans votre méthode setEditing:animated: vous faites deux choses que vous êtes vraiment pas censé faire. Recharger les données de la table n'a aucun sens. Et si vous devez modifier manuellement les boutons de votre barre d'onglets, vous ne les avez pas configurés correctement. Le système prend soin de cela pour vous. Si vous avez correctement configuré un bouton d'édition, vous n'avez même pas besoin d'appeler manuellement setEditing:animated:.

Je pense que vous devriez passer en revue un exemple de code UITableView.

+0

Curieusement, votre petit prod dans la bonne direction a tout réglé. Je comparais des échantillons et j'ai trouvé que mon DetailViewController était un UIViewController et non un UITableViewController. (Générateur d'interface j'ai lié la vue avec vue de table, (de la vue initiale)). J'ai fait le changement dans le code et l'interface constructeur puis les accessoires ont fonctionné! La prochaine chose que j'ai faite a été d'ajouter du code pour supprimer les icônes latérales rouges pour aucune suppression de ligne, et le dernier morceau du puzzle était l'ajout de self.tableView.allowsSelectionDuringEditing = YES; // dés-ajouté dans viewDidLoad. Merci beaucoup. – oberbaum