用于出列单元格的 UITableView 占位符

发布于 2024-12-05 04:36:58 字数 254 浏览 2 评论 0原文


有一件愚蠢的小事让我很烦恼,我很想听听你对此的看法。

我使用带有自定义 UITableViewCell 的 UITableView 来显示 RSS 提要中的一些新闻项目。这工作得很好,

唯一的问题是 - 当向下滚动时,我看到“旧”单元格,并且只有当我的滚动停止时,它才会加载新内容。

所以我的问题是 - 我可以以某种方式放置一个占位符,这样它至少会在滚动或其他类型的指示时显示“正在加载”吗?

预先感谢:)
沙伊

There's this stupid little thing thats annoying me and i'd love to hear your opinion about it.

I'm using a UITableView with custom UITableViewCell's to display some news item from an RSS feed. this is working great ,

the only problem is - when is scroll down, i see the "old" cells, and only when my scroll stops, it loads the new content.

So my question is - can i somehow put a placeholder so it would at least show "loading" when scrolling or some other kind of indication?

Thanks in advance :)
Shai

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

狼性发作 2024-12-12 04:36:58

什么时候用内容填充单元格,通常是在 UITableViewDataSource 中执行此操作,

- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

每次在显示单元格之前需要一个单元格时都会调用它。如果您设置数据表单,则此处的单元格将在显示之前更新。

如果您要从网络上获取某些内容(这可能需要一些时间),则可以在此处将从网络上获取的任何内容设置为加载或占位符图像。

然后在 UITableViewDelegate

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath; 

启动异步获取数据并在接收到数据时更新单元格。

When do you fill you cells with content, normally you do this in the UITableViewDataSource

- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

This will get called every time a cell is needed before displaying it. If you set the data form that cell here is will be update before it gets displayed.

If you are grabbing something from the web, which could take some time, this is the place to set any content that you grab from the web to loading or placeholder images.

Then in the UITableViewDelegate

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath; 

Start the async fetching of data and update the cell when the data is received.

蘑菇王子 2024-12-12 04:36:58

为了避免在新单元格中重复以前的数据,请使用唯一的单元格标识符。

    NSString *CellIdentifier = [NSString stringWithFormat:@"%i", indexPath.row];
    NewsCell *cell = (NewsCell *) [tableView dequeueReusableCellWithIdentifier: CellIdentifier];
    if (cell == nil) 
    {   
        cell = [[ActivitiesCell alloc] initWithStyle:UITableViewStylePlain reuseIdentifier:CellIdentifier];
    }

在 NewsCell.m 文件中,使用以下代码并通过调用 initWithStyle 方法加载新单元格,而不是使用 loadNibNamed

    - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier 
    {
        self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
        if (self) 
        {
    // Initialization code. 
        }
        return self;
    }

To avoid duplication of previous data in new cell, use an unique CellIdentifier.

    NSString *CellIdentifier = [NSString stringWithFormat:@"%i", indexPath.row];
    NewsCell *cell = (NewsCell *) [tableView dequeueReusableCellWithIdentifier: CellIdentifier];
    if (cell == nil) 
    {   
        cell = [[ActivitiesCell alloc] initWithStyle:UITableViewStylePlain reuseIdentifier:CellIdentifier];
    }

In NewsCell.m file, use following code and load the new cell by calling initWithStyle method, instead of using loadNibNamed.

    - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier 
    {
        self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
        if (self) 
        {
    // Initialization code. 
        }
        return self;
    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文