J'essaie d'avoir une tableview qui mène à une autre tableview dont les éléments de la liste dépendent de la première vue. J'ai la base de données correctement configurée et mon problème est que quand je sélectionne un élément sur la première page et que je passe à la deuxième vue pour la première fois ça fonctionne bien mais quand je reviens à la première page et retourne à la deuxième vue la liste a toujours les anciennes valeurs chargées de nouvelles. Y at-il un moyen de détruire le tableau et le recréer chaque fois que la deuxième vue est chargée? Où ferais-je cela?Comment réinitialiser la matrice dans l'application iphone multiview
Voici où mon tableau est initialisé au délégué:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[self copyDatabaseIfNeeded];
organArray = [[NSMutableArray alloc] init];
procedureArray = [[NSMutableArray alloc] init];
[Organ getInitialDataToDisplay:[self getDBPath]];
[window addSubview:navigationController.view];
[window makeKeyAndVisible];
return YES;
}
Voici où les données sont ajoutées au tableau dans ma classe personnalisée:
+ (void) getDatabase:(NSString *)dbPath WithOrganID:(NSNumber *)organID
{
RadiologyAppAppDelegate *appDelegate = (RadiologyAppAppDelegate *)[[UIApplication sharedApplication] delegate];
if(sqlite3_open([dbPath UTF8String],&database) == SQLITE_OK){
const char *sql = "select * from Organ";
sqlite3_stmt *selectstmt;
if(sqlite3_prepare_v2(database, sql, -1, &selectstmt, NULL) == SQLITE_OK){
while (sqlite3_step(selectstmt) == SQLITE_ROW) {
NSInteger primaryKey = sqlite3_column_int(selectstmt, 0);
Procedure *procedureObj = [[Procedure alloc] initWithPrimaryKey:primaryKey];
procedureObj.procedureName = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt,1)];
procedureObj.procedureID = sqlite3_column_int(selectstmt,0);
[appDelegate.procedureArray addObject: procedureObj];
[procedureObj release];
}
}
}
else
sqlite3_close(database);
}
Enfin, voici mon avis contrôleur:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
Procedure *procedureObj = [appDelegate.procedureArray objectAtIndex:indexPath.row];
PVCprocedureObj = appDelegate.procedureArray;
cell.textLabel.text = procedureObj.procedureName;
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
return cell;
}
Merci pour l'aide!
J'appelle la méthode pour remplir le tableau dans le didSelectRowAtIndexPath dans ma racine Contrôleur de vue. C'est ce que tu veux dire? –
J'ai créé une méthode dans mon délégué que j'appelle juste avant ma méthode de population de tableau qui ré-initialise le tableau et cela fonctionne très bien maintenant. Merci pour l'aide! –