这是我的应用程序的流程:我有带有图像缩略图的 UICollectionview。用户选择图像并点击保存按钮。图像被保存到相机胶卷。
这就是我想要做的:通过子视图,我想标记用户已经点击并保存的那些单元格。我该如何做到这一点?
这就是我已经做过的......我的方法:显然我错过了一些东西,我无法解决它。
当用户点击保存按钮时,我使用核心数据成功地将这些图像的 ID 保存到本地存储。然后,我从该实体中获取对象并将这些对象放入数组中。现在,我正在尝试将获取的数组中的图像 ID 与集合视图中的图像 ID 进行比较,因此我只能将子视图添加到 ID 匹配的那些单元格,这就是我卡住的地方。我不知道这是否是正确的方法。
我的愚蠢尝试:
当用户点击保存按钮时会调用此方法,但它不能正常工作。我觉得它是随机添加子视图。
-(void)markSavedImages
{
BOOL isMarked;
NSArray *savedImages = [self fetchSavedPhotos];
NSEnumerator *enumerator = [savedImages objectEnumerator];
NSString *savedImage;
while (savedImage = [enumerator nextObject]) {
if ([[self.eventPhotos valueForKey:@"id"] containsObject:savedImage]) {
isMarked = YES;
}
else
{
isMarked = NO;
}
}
CVCell *cell = [[CVCell alloc]init];
for (NSIndexPath *indexPath in self.livePhotosCollectionView.indexPathsForVisibleItems) {
if (isMarked) {
cell = (CVCell*)[self.livePhotosCollectionView cellForItemAtIndexPath:indexPath];
UIImageView *markedImage = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"markedCVCell.png"]];
[cell addSubview:markedImage];
[cell bringSubviewToFront:markedImage];
cell.userInteractionEnabled = NO;
}
}
}
这self.eventPhotos
是一个包含图像 ID 和服务器路径的数组。
请帮帮我,我一直在为此自杀,在谷歌上找不到任何东西。
编辑- 根据要求
-(NSArray*)fetchSavedPhotos
{
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication]delegate];
NSManagedObjectContext *context = [appDelegate managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Photos" inManagedObjectContext:context];
[fetchRequest setEntity:entity];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"eventID ==[c] %@", _eventID];
[fetchRequest setPredicate:predicate];
NSError *error = nil;
NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error];
if (fetchedObjects == nil) {
NSLog(@"No rows returned");
}
NSArray *savedImages = [fetchedObjects valueForKey:@"imageID"];
return savedImages;
}
更多信息....如果我在 markSavedImages 方法中输出 savedImages 数组,我确实得到了我想要得到的数组。像这样的东西:(1324,2353,2324)。基本上是图像 ID 数组。