gpt4 book ai didi

ios - 将 UIImageView 仅应用于 UITableView 中的特定部分

转载 作者:行者123 更新时间:2023-11-29 01:26:54 25 4
gpt4 key购买 nike

我有一个简单的应用程序,它由 UITabBar 组成,其中每个 Tab 都是一个 UITableViewController。出于这个问题的目的,我将只关注名为 Videos (第一个选项卡)的 UITableViewController 和另一个名为 Languages<的 UITableViewController/(第二个选项卡)。

视频eos 选项卡由视频列表的一部分组成。 Languages 选项卡包含两个部分,其中 section 0 是传单,section 1 = 与视频选项卡相同的相应视频。

例如,如果视频选项卡具有:

  • 视频 10010

  • 视频 20010

  • 视频 30010

  • 视频 40010

  • 视频 50010

然后,Languages 选项卡第 1 部分还将包含:

  • 视频 10010

  • 视频 20010

  • 视频 30010

  • 视频 40010

  • 视频 50010

我有一些代码,可以在已选择的任何单元格上放置一个星号,并且该单元格的标题将添加到核心数据(将显示在名为收藏夹的第三个选项卡中) - 但这对于这个问题并不重要)。

我想确保应用内的一致性,因此如果我在 Videos 选项卡中的 Video 20010 中放置一颗星,我想确保 视频 20010 在语言中也有一颗星。

那部分有效。然而,问题是,星星被放置在传单部分(第 0 部分)以及视频部分(部分1)的语言选项卡。

这是Languages选项卡中cellForRow的部分代码。

// This code is important because I might set the Leaflets section to be a favourite from within the Languages tab (not related to the Videos tab, etc). 

if(indexPath.section==0)
{
customCell.customCellLabel.text = [NSString stringWithFormat:@"%@",[self.availableLeaflets objectAtIndex:indexPath.row]];
NSString *key = [NSString stringWithFormat:@"%@_%ld_%ld", self.selectedLanguage, (long)indexPath.section, (long)indexPath.row];
if (self.favoritesDict[key]) {
// show the favorite image
customCell.customCellImage.hidden = NO;
} else {
// hide the favorite image
customCell.customCellImage.hidden = YES;
}
}
else
{
customCell.customCellLabel.frame = CGRectMake(8, 20, 100, 40);
customCell.customCellLabel.text = [NSString stringWithFormat:@"%@",[self.availableVideos objectAtIndex:indexPath.row]];

NSString *key = [NSString stringWithFormat:@"%@_%ld_%ld", self.selectedLanguage, (long)indexPath.section, (long)indexPath.row];
if (self.favoritesDict[key]) {
// show the favorite image
customCell.customCellImage.hidden = NO;
} else {
// hide the favorite image
customCell.customCellImage.hidden = YES;
}

}

NSManagedObjectContext *context = [self managedObjectContext];
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Favourites"];
request.predicate = [NSPredicate predicateWithFormat:@"title != nil"];
NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"title" ascending:YES];
request.sortDescriptors = [NSArray arrayWithObject:sortDescriptor];

NSError *error = nil;
NSArray *favs = [context executeFetchRequest:request error:&error];
if (!favs)
{
NSLog(@"Nothing to see here");
}
else
{
NSLog(@"Number of objects %lu", [favs count]);
for (Favourites *favourite in favs)
{
NSString *string = [NSString stringWithFormat:@"%@", favourite.title];
favourite.title = string;
NSLog(@"The favourite titles are %@", favourite.title);

if ([customCell.customCellLabel.text isEqualToString:favourite.title])
{

customCell.customCellImage.hidden = NO;
}
}

}

更新

当某个单元格被收藏时,会发生以下情况:

NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];

CustomLeafletVideoTableViewCell *selectedCell = (CustomLeafletVideoTableViewCell*)[self.tableView cellForRowAtIndexPath:indexPath];

NSString *cellTitle = selectedCell.customCellLabel.text;

NSLog(@"The text is %@", cellTitle);

NSManagedObjectContext *context = [self managedObjectContext];

NSString *key = [NSString stringWithFormat:@"%@_%ld_%ld", self.selectedLanguage, (long)indexPath.section, (long)indexPath.row];
if (self.favoritesDict[key] == nil)
{
self.favoritesDict[key] = @(1);
Favourites *favourites = [NSEntityDescription insertNewObjectForEntityForName:@"Favourites" inManagedObjectContext:context];
favourites.title = cellTitle;

}
else
{

[self.favoritesDict removeObjectForKey:key];
NSError *error;

NSFetchRequest *request = [[NSFetchRequest alloc] init];
request.entity = [NSEntityDescription entityForName:@"Favourites" inManagedObjectContext: context];
request.predicate = [NSPredicate predicateWithFormat:@"title == %@", cellTitle];
NSArray *items = [context executeFetchRequest:request error:&error];
if (error == nil && items.count)
{
NSManagedObject *managedObject = items[0];
[context deleteObject:managedObject];

}
}

[[NSUserDefaults standardUserDefaults] setObject:self.favoritesDict forKey:@"favoritesDict"];
NSError *error = nil;
if (![context save:&error])
{
// Error
}

[cell hideUtilityButtonsAnimated:YES];

[self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];

我不想将图像放入“语言”选项卡的“传单”部分(第 0 部分);我只想定位视频部分(第 1 部分)。使用上面的代码,第 1 节中的正确单元格正在应用 UIImageView,但我想确保第一部分(传单)也没有获得星星。

对此的任何指导将不胜感激。

最佳答案

在单元格出列后立即说 customCell.customCellImage.hidden = YES; 然后更改:

if ([customCell.customCellLabel.text isEqualToString:favourite.title])
{

customCell.customCellImage.hidden = NO;
}

收件人:

if ([customCell.customCellLabel.text isEqualToString:favourite.title] && indexPath.section == 1)
{

customCell.customCellImage.hidden = NO;
}

关于ios - 将 UIImageView 仅应用于 UITableView 中的特定部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33894026/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com