所以我一直在寻找这个我遇到的有趣问题的答案,但运气不太好。基本上,我在初始应用程序启动时预加载了一个 UITableView,其中包含一些使用 CoreData 的对象,以及用户添加更多对象的能力。
我允许删除表格中的单元格,除了我最初预加载的项目。因此,我在我的 canEditRowAtIndexPath 方法中执行检查,如果所选项目是这些预加载项目之一,则返回 NO。一切都很好,直到我向下滚动到足以让其中一个项目离开屏幕,然后当它重新捕捉不应编辑的项目时,现在可以编辑了。
我对 iOS 开发相当陌生,所以我希望这是一个相当业余的问题 - 但我似乎找不到答案。
任何帮助表示赞赏。
- (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;
}