2011-06-12 1 views
1

J'ai une application iPhone qui a une vue de table qui contient des cellules qui, lorsqu'on les touche, montrent un détail de cet objet. Je voudrais ajouter un bouton Supprimer en bas de la vue détaillée. Lorsque l'utilisateur appuie dessus, l'objet représenté par la cellule doit être supprimé et l'application doit retourner dans TableView.Bouton Supprimer dans UIViewController qui montre le détail d'une cellule

En termes de meilleures pratiques, quel est le moyen idéal pour y parvenir?

+0

Où stockez-vous vos données que TableView et detailview utilisent? Normalement, vous supprimez simplement ces données ou vous les marquez comme étant supprimées, puis vous fermez la vue pour revenir à votre tableview. – SMSidat

+0

Ça a l'air bien. Mais comment puis-je générer le bouton en premier lieu? Par programme ou via Interface Builder? Un extrait de code serait cool :) –

+0

Je pense qu'il n'y a rien à sérieux à ce sujet, si vous supprimez avec succès les détails particuliers après avoir sauvegardé votre tableview vous utilisez simplement le - (void) viewWillAppear: (BOOL) animé { \t [super viewWillAppear: animé]; \t [self.tableView reloadData]; } – sandy

Répondre

2

Il y a quelques façons dont vous pouvez signaler la suppression. L'un d'entre eux est des délégués. Vous pouvez définir votre délégué comme celui-ci,

@protocol DetailViewControllerDelegate 
- (void)shouldDeleteDetailObject:(id)object 
@end 

Et votre point de vue sous-classe de contrôleur de table adopter le protocole et mettre en œuvre la méthode comme,

- (void)shouldDeleteDetailObject:(id)object { 
    [self.objectsArray removeObject:object]; 
    [self.navigationController popViewControllerAnimated:YES]; 
} 

Et vous un message [self.tableView reloadData]; dans viewWillAppear: comme Sandy a indiqué.

Votre action du bouton sera mis en œuvre,

- (IBAction)deleteObject { 
    if (self.delegate && [self.delegate respondsToSelector:@selector(shouldDeleteDetailObject:)]) { 
     [self.delegate shouldDeleteDetailObject:self.detailObject]; 
    } 
} 

Et délégué devrait être une propriété ed assign.

Vous pouvez également consulter les notifications, mais c'est une meilleure solution pour cette situation.

+0

@Eric Brotto Avez-vous trouvé cela utile? Avez-vous besoin d'aide supplémentaire à ce sujet? –

0

Je pense qu'il n'y a rien de sérieux, si vous supprimez avec succès les détails particuliers après que sur la sauvegarde de la vue précédente (tableview) vous utilisez juste cette

-(void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 
    [self.tableView reloadData]; 
} 
Questions connexes