J'ai donc cherché une réponse à ce problème intéressant que j'ai rencontré mais qui n'a pas eu beaucoup de chance. Fondamentalement, j'ai un UITableView préchargé sur le lancement initial de l'application avec quelques objets en utilisant CoreData, et la possibilité pour l'utilisateur d'ajouter plus.Renvoyer NO sur canEditRowAtIndexPath, mais peut modifier si défilée
J'autorise la suppression de cellules dans la table, à l'exception des éléments que j'ai pré-chargés initialement. J'effectue donc une vérification dans ma méthode canEditRowAtIndexPath et renvoie NO si l'élément sélectionné est l'un de ces éléments préchargés. Tout fonctionne bien jusqu'à ce que je descende assez loin pour que l'un des éléments soit en dehors de l'écran, et puis quand il réapparaît l'élément qui ne devrait pas être modifiable, est maintenant modifiable. Je suis assez nouveau dans le développement iOS, donc j'espère que c'est un problème plutôt amateur - mais je n'arrive pas à trouver la réponse.
Toute aide est appréciée.
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
DataLayer *dl = [DataLayer alloc];
// Get all items from Favorites
NSArray *results = [dl FetchAll:@"Favorites"];
// Get currently selected cell properties
FavoritesTableCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath];
Favorites *fav = [Favorites alloc];
NSMutableArray *genItems = [[NSMutableArray alloc] init];
// Get only records that are default app items
for(int a = 0; a < [results count]; a++){
fav = [results objectAtIndex:a];
if ([fav.generic isEqualToNumber:[NSNumber numberWithInt:1]]) {
[genItems addObject:fav];
}
}
// Loop through default items to determine if editable
for (int i = 0; i < [genItems count]; i++) {
fav = [genItems objectAtIndex:i];
if ([fav.title isEqualToString:[selectedCell.nameLabel text]]) {
return NO;
}
}
return YES;
}
aucun moyen d'aider sans le code – danh