我创建了一个UITableView,最初有5个部分,每个部分有3行。第一行是标题,第二行是图像,第三行是页脚,数据来自互联网,包含每个单元的标题,图像,页脚。因为数据很大,所以我通过向上拖动UITableView的底部来进行分页以进入下一页,并通过向下拖动UITableView的顶部来转到上一页。它像9GAG Reader一样工作。我也想在改变页面时为9GAG Reader制作相同的动画,动画是 -
。当下一页准备就绪时,它将滚动到我做的下一页,工作正常。 。当下一页完成后,将删除上一页。
对于每个页面,有5个部分,所以我这样做 - 我在页面首先添加5个部分,如果到下一页,将添加5个部分,然后滚动到第5个部分,所以滚动动画效果很好。
但是对于下一部分,在删除0-4部分之后,其余部分的位置发生了变化,这是一个问题。我希望下一页的位置固定,我该怎么做?
// here expend to 2 page, 10 sections, and then scroll to the next page
self.totalSections = TOTAL_SECTIONS * 2;
[self.mainContent reloadData];
[self.mainContent scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:TOTAL_SECTIONS] atScrollPosition:UITableViewScrollPositionTop animated:YES];
// here delete the 0-5 sections, the previous page, but postion is changed..
NSIndexSet *deletes = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, 5)];
self.totalSections = TOTAL_SECTIONS;
[self.mainContent deleteSections:deletes withRowAnimation:UITableViewRowAnimationNone];
答案 0 :(得分:1)
我是9Gag Reader的两个开发者之一,我不是那个做过这部分的人,但我知道它是如何工作的。 我认为你这样做的方式有点过于复杂。要创建您要重新创建的效果,我们会截取tableview的屏幕截图并使用它来执行此操作,这样我们就不会添加/删除可能导致崩溃的行,我们只是重新加载内容。
我希望它有所帮助,它不适用于9Gag Reader克隆:p!告诉我们你的应用何时上线(查看itunes页面上的联系地址);)
此致
Arthur @Appinest
答案 1 :(得分:-2)
我解决了这个问题,看来这个序列真的很酷 -
self.totalSections = TOTAL_SECTIONS * 2;
[self.mainContent reloadData];
[self prepareCellCacheTitle:0];
NSIndexSet *deletes = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, 5)];
self.totalSections = TOTAL_SECTIONS;
[self.mainContent deleteSections:deletes withRowAnimation:UITableViewRowAnimationNone];
[self.mainContent reloadData];
[self.mainContent scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:YES];