2017-10-20 40 views
0

J'ai trois vues de table dans un View Controller (leur visibilité est contrôlée par un contrôle de segment). Cela dit, je veux seulement que les cellules aient la possibilité d'être supprimées de self.friendsView, et non les autres vues de table. J'ai le code suivant ci-dessous dans mon contrôleur de vue, mais la capacité de glisser et de supprimer une cellule est visible sur les trois vues de ma table, pas seulement sur self.friendsView. Comment puis-je réparer cela?iOS/Obj-C - Implémenter UITableViewCellEditingStyleDelete sur une vue de table dans View Controller?

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if (tableView == self.friendsView) { 
     if (editingStyle == UITableViewCellEditingStyleDelete) { 
      // Delete the row from the data source 

      NSMutableDictionary *nodeData = [[self.myFriendData objectAtIndex:indexPath.row] mutableCopy]; 

      NSString *nid = [nodeData objectForKey:@"nid"]; 
      [nodeData setObject:nid forKey:@"nid"]; 
      NSLog(@"%@",nid); 

      [self.myFriendData removeObjectAtIndex:indexPath.row]; 

      [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade]; 



      [DIOSNode nodeDelete:nodeData success:^(AFHTTPRequestOperation *operation, id responseObject) { 
       NSLog(@"node deleted!"); 
      } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
       NSLog(@"could not delete node!"); 
      }]; 
     } 
    } 
} 
+0

Pas une réponse directe à votre question, mais pourquoi avez-vous trois vues de la table quand une seule est visible à la fois? Juste avoir une vue de la table. Lorsque l'utilisateur sélectionne un segment différent, vous rechargez la vue d'une table. Vos méthodes de source de données renvoient les données appropriées en fonction du segment sélectionné. Beaucoup plus efficace que d'avoir trois vues de table séparées et d'avoir à les cacher/montrer au besoin. – rmaddy

Répondre

0

En plus de la mise en œuvre commitEditingStyle vous devez également mettre en œuvre la méthode déléguée editingStyleForRowAtIndexPath.

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath { 
    if (tableView == self.friendsView) { 
     return UITableViewCellEditingStyleDelete; 
    } else { 
     return UITableViewCellEditingStyleNone; 
    } 
}