Dans un contrôleur de vue (onglet 1), je charge à partir des données de base comme ceci:faute de base de données frustration
- (void)loadRecordsFromCoreData {
[self.managedObjectContext performBlockAndWait:^{
NSError *error = nil;
NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"Item"];
[request setSortDescriptors:[NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"order" ascending:YES]]];
self.items = [self.managedObjectContext executeFetchRequest:request error:&error];
}];
}
J'afficher ensuite les articles comme celui-ci (en viewDidAppear):
- (void)displayItems
{
for(UIView *subview in [self.itemRow subviews]) {
[subview removeFromSuperview];
}
int xPos = kXItemOffsetIphone;
for (Item *item in self.items) {
ItemView *itemView = [[ItemView alloc] initWithFrame:CGRectMake(xPos, kYItemOffsetIphone, kItemWidthIphone, kItemHeightIphone) ];
[itemView layoutWithData:item];
[self.itemRow addSubview:itemView];
xPos += kXItemSpacingIphone;
}
}
ItemView est une sous-classe UIView qui affiche l'image associée à l'élément, etc. Lorsque je lance l'application pour la première fois, tous les éléments sont affichés. Cependant, si je clique sur un autre onglet, puis revenons à l'onglet 1, tous mes éléments disparaissent. Le tableau d'éléments est toujours là, mais chaque élément du tableau est un "défaut", donc rien ne s'affiche. Très frustrant. Comment puis-je empêcher ces articles de devenir des «failles»?
Merci, c'était précisément cela (le contexte ne persiste pas). Je ne regarde pas de re-chercher de coredata à moins que la vue soit complètement déchargée donc j'essayais d'éviter de le faire à chaque fois dans viewWillAppear. Fonctionne maintenant lorsque vous utilisez le bon contexte. – soleil
Ceci est certainement une excellente solution. Résolu mes problèmes ... –