首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的UITableView内容在试图向上滚动时会“跳起来”?

为什么我的UITableView内容在试图向上滚动时会“跳起来”?
EN

Stack Overflow用户
提问于 2015-06-24 18:36:34
回答 1查看 597关注 0票数 1

对此最好的解释是在我刚拍的这段视频中。

我会尝试在这里描述它,但对于那些不能观看视频,但我真的建议看视频,因为它更具有描述性。

我有一个带有UITableView的控制器,我已经将它简化为尽可能简单。在初始加载时,将获取10条数据。还有一个UIBarButtonItem,可以随时获取10条额外的数据。

现在每个单元格也有两个可变高度标签。“标题”标签可以显示最多2行。和“字幕”标签,可以显示最多5行。注:如果我把相同的文字放在每个标题中,把同样的文本放在每个字幕中,那么就永远不要改变标签的大小.我要描述的这个问题不是一个问题。因此,为什么我在视频中说,我认为这与自我大小的细胞有关。

现在,问题是:在初始负载时,我们得到10个单元。A,B,C.,I,J,我向下滚动到J,然后按下按钮,再取10个。我现在有A->T细胞(20个细胞).我现在还在看J细胞。问题是..。如果我想在J细胞和A细胞之间翻滚.内容会跳转。细胞K到T都很好,你可以在它们上上下滚动无限的时间。但是,如果我从J,I,H,G,F.每个人都会“跳”。我是说跳..。我的手指向下移动,内容向下移动,每100像素左右,内容将跳回80个像素。(我真的推荐这段视频,这比我现在描述的要好得多)。现在,如果我们在单元格F上,我可以自由地向下滚动,然后通过单元格的F -> T. J,I,H,G,F不再跳,因为他们已经跳过一次了。但是,如果我向上滚动到E,D,C,B,A.我还没查到..。每个人的内容都会“跳”一点,同时滚动到他们身边。

tl;dr: A UITableView有0.N行。X是0.N之间的一个值。用户可以获取额外的行Y,这将使新的TableView计数0.(N+Y)。问题是..。在初始加载时,用户可以滚动到行X,然后获取Y附加行。然后,滚动到行0..(X-1)将出现“内容跳跃”问题,当用户手指在设备上向下移动以向下滚动内容时,内容将“跳”回50个像素,每个显示的单元格介于0..(X-1)之间。单元格的X.(N+Y)没有这个问题。一旦一个单元格经历了这个“跳转内容”问题,它将不会再次通过,除非完成另一个提取。

EN

回答 1

Stack Overflow用户

发布于 2015-06-24 19:15:44

每当您滚动表视图时,将调用cellforrowatindexpath方法,并创建一个新的单元格。

因此,如果您同时进行数据调用,将在表视图中出现明显的滞后。

下面是一个在后台线程上调用某个东西的示例方法。

(IBAction)backgroundQueue:(Id)发件人{

代码语言:javascript
复制
// call the same method on a background thread
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

    [NSThread sleepForTimeInterval:3];
    int i = arc4random() % 100;

    // update UI on the main thread
    dispatch_async(dispatch_get_main_queue(), ^{
        self.title = [[NSString alloc]initWithFormat:@"Result: %d", i];
    });

});

}`

尝试将数据调用方法放在后台线程上,该线程允许主线程用于UI更新。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31034378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档