gpt4 book ai didi

iphone - 在 iPhone 邮件应用程序上重新创建蓝色 “unread dot” 的功能

转载 作者:行者123 更新时间:2023-12-03 21:24:30 24 4
gpt4 key购买 nike

我正在构建一个 RSS 阅读器,其 GUI 与内置邮件应用程序非常相似。下载后,它使用核心数据来存储信息。下载故事后,它会出现一个蓝点,表示它是新的。一旦我读完故事后返回主页,这个点就应该消失了。它会一直保留在那里,直到我滚动或重新启动应用程序。在 viewWillAppear: 方法中,我调用 [self.tableView reloadData]; ,它成功地为所有可见单元调用了 cellForRowAtIndexPath: 。这是我的cellForRowAtIndexPath:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{
static NSString *CellIdentifier = @"StoryCellIdentifier";
StoryCell *cell = (StoryCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[[NSBundle mainBundle] loadNibNamed:@"StoryCell" owner:self options:nil] objectAtIndex:0];
}

NSUInteger thisRow = [indexPath row];
NSManagedObject *managedObject = [storyData objectAtIndex:thisRow];

cell.titleLabel.text = [[managedObject valueForKey:@"title"] description];
cell.descLabel.text = [[managedObject valueForKey:@"subTitle"] description];
if (!([managedObject valueForKey:@"new"]))
{
cell.readIndicator.image = nil;
}

return cell;
}

程序在应该的时候到达了 cell.readIndicator.image = nil; 行。事实上,无论点存在还是不存在,程序都遵循相同的执行路径。另外,这可能是相关的,但是当我返回导航 Controller 时,我单击的单元格仍然突出显示。

编辑:与 .xib 相对应的 .m 文件只是样板文件。

- (id)initWithFrame:(CGRect)frame reuseIdentifier:(NSString *)reuseIdentifier 
{
if (self = [super initWithFrame:frame reuseIdentifier:reuseIdentifier])
{ }
return self;
}

- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
[super setSelected:selected animated:animated];
}

编辑2:

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath     *)indexPath
{
StoryView *storyView = [[StoryView alloc] initWithNibName:@"StoryView" bundle:nil];
NewsItem *item = [storyData objectAtIndex:[indexPath row]];

[storyView viewLoaded:item];

// Pass the selected object to the new view controller.
// ...
item.new = NO;
[managedObjectContext save:nil];
[self.navigationController pushViewController:storyView animated:YES];

[storyView release];
}

最佳答案

可能是一个单独的错误的一件事是,如果重新使用具有已读项目的单元格来显示未读项目,您的单元格将显示错误......您需要执行类似的操作

if (!([managedObject valueForKey:@"new"]))
{
cell.readIndicator.image = nil;
}
else
{
cell.readIndicator.image = blueDotImage;
}

而不是仅仅假设蓝点图像是在创建单元格时放置在那里的。

对于不显示的部分,我想知道是否需要调用setNeedsDisplay --当您更改 readIndicator 时,单元格可能没有意识到需要重新绘制。的图像。

关于iphone - 在 iPhone 邮件应用程序上重新创建蓝色 “unread dot” 的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1892349/

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