2010-01-19 8 views
1

J'ai une liste d'éléments, et dans un contrôleur de vue modale, j'ai ce qui est effectivement un écran «Nouvel élément», où un utilisateur peut saisir une nouvelle chose pour la liste.Array, ne pas rafraîchir la vue de la table

La liste est UITableView, avec la source de données, NSMutableArray.

ici est le code sur le MVC

- (IBAction) fait {

[RoutineTitle resignFirstResponder]; 
[RoutineInvolvment resignFirstResponder]; 

NSString *myString = RoutineTitle.text; 
FirstViewController *FirstView = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil]; 

NSLog(@"Log the String: %@", myString); 

[FirstView.routines addObject:myString]; 

[auto dismissModalViewControllerAnimated: OUI];

}

Mais, puis quand ils sont retournés à l'écran normal, il ne se présente pas. je ne sais pas si c'est ne pas l'ajouter correctement au tableau, ou si la vue de la table a besoin d'être rafraîchie ou quoi.

Toute aide serait appréciée. Merci

Sam

Répondre

0

Votre code n'a aucun sens. Est-ce que vous appelez -presentModalViewController dans votre FirstViewController? Pourquoi instanciez-vous un nouveau FirstViewController dans votre méthode -done? Ce que vous devez faire lorsque vous présentez votre contrôleur de vue «nouvel élément», c'est de lui faire passer une référence à votre vue de table et à votre conteneur de données. Quelque chose comme ceci:

NewItemViewController *controller = [[NewItemViewController alloc] init]; 
[controller setTableView:firstViewTableView]; 
[controller setDataContainer:routines]; 
[self presentModalViewController:controller]; 
[controller release]; 

Ensuite, dans votre -done: action de votre nouveau contrôleur vue élément que vous pouvez ajouter la chaîne au conteneur de données (NSMutableArray) puis rechargez la vue de table comme ceci:

- (IBAction)done:(id)sender; 
{ 
    NSString *myString = RoutineTitle.text; 
    [dataContainer addObject:myString]; 
    [tableView reloadData]; 

    [self dismissModalViewController]; 
} 

Votre NewItemViewController aura besoin de deux @ Ivars syntheisze'd comme ceci:

@property (nonatomic, retain) UITableView *tableView; 
@property (nonatomic, retain) NSMutableArray *dataContainer; 

Laissez-moi savoir si vous avez besoin d'éclaircissements.

+0

Hey Matt, merci pour votre réponse. Cette partie FirstViewController * FirstView = [[FirstViewController alloc] initWithNibName: @ "Ensemble FirstViewController": nil]; était ainsi le tableau de routine pourrait être utilisé dans les deux classes. Un ami m'a dit de le faire de cette façon. Votre solution fera-t-elle la même chose? ajouter la chaîne au tableau, puis recharger les données? –

+0

et que fait setTableView? et que dois-je mettre après le ':' –

+0

-setTableView: devrait juste prendre une référence à votre vue de table dans le contrôleur de vue qui appelle -presentModalViewController. Si ce contrôleur de vue est UITableViewController, vous pouvez simplement le passer [self tableView].Si ce n'est pas le cas, vous devez créer une sortie vers UITableView que vous utilisez dans le contrôleur de vue. –

1

Vous devez utiliser reloadData sur votre `UITableView

-à-dire

[myTableView reloadData]; 
+0

6 suis ici .. désolé, édité mon message –

0

Dans votre méthode -viewWillAppear:(BOOL)animated, après l'appel à super vous devez également appeler [self.tableView reloadData];

Questions connexes