gpt4 book ai didi

ios - 使用分页显示 UICollectionView 的正确方法

转载 作者:行者123 更新时间:2023-11-28 21:38:38 26 4
gpt4 key购买 nike

我已经阅读了很多关于带分页的 UICollectionView 的 SO 解决方案。我自己也使用这些解决方案:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
CGFloat pageWidth = self.collectionView.frame.size.width;
self.lbPaging.text = [NSString stringWithFormat:@"%d/%d", self.collectionView.contentOffset.x / pageWidth, totalPage];
}

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
CGFloat pageWidth = self.collectionView.frame.size.width;
self.lbPaging.text = [NSString stringWithFormat:@"%d/%d", self.collectionView.contentOffset.x / pageWidth, totalPage];
}

是的,大多数时候这项工作都很好。但是现在我遇到了意想不到的事情:

当用户滚动足够快时,它会通过上面的方法,这可能会导致分页故障(例如最后一页显示 15/13,或者即使是第一页也显示 3/5)。

Precisely for us developer or tester, to reproduce this bug, keep your finger touch on the scroll view and start to scroll. When you're nearly out of the edge (where normally, you'll release your finger), touch the other side of the edge and keep scrolling. It's easier to reproduce on real device.

所以我问是否有人知道显示页面导航的正确方法?好吧,没有 UIPageViewController(我想显示数字页面,而不是点)。

编辑

我不知道这个问题是否严重,但我想可能是,因为我在滚动到下一页时正在执行加载数据。最近,我遇到了崩溃(这真的很难调试,比如在哪一步崩溃了):

    [self.collectionView performBatchUpdates:^{
NSMutableArray *arrayWithIndexPaths = [NSMutableArray array];
for (NSInteger index = 0; index < next2page.count; index++ ) {
[arrayWithIndexPaths addObject:[NSIndexPath indexPathForRow:(index + offset) inSection:0]];
}
[self.collectionView insertItemsAtIndexPaths:arrayWithIndexPaths];
} completion:nil];

异常是这样的:无法将项目插入到第 0 节中的索引路径(只有 69 行,插入到 indexPath:73)

最佳答案

hello i have create button in UICollectionView like load more data and function is given below:-

- (void)viewDidLoad {

//declare page inedex initial base 0.
self.pageIndex = 0;

[self loadMoreData];
}

在你调用加载更多数据函数后页面索引会在这里增加我希望我的页面索引像 0,20,40 所以我创建了 self.pageIndex+= 20 你可以根据你的需要改变

-(void)loadMoreData
{

self.isFromMoreData = TRUE;

self.pageIndex+= 20;

NSLog(@"loadMoreData %d and self.index %d",self.pageIndex,self.index);

[self loadDataIntoCollectionView];//this function calls api
}

******************下面给出另一种方法************************ *******

使用 UIRefreshControl。

 UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];

refreshControl = refreshControl;

refreshControl.backgroundColor = [UIColor whiteColor];
refreshControl.tintColor = [UIColor grayColor];
[refreshControl addTarget:self action:@selector(loadMoreData) forControlEvents:UIControlEventValueChanged];

self.myCollectionView.pagingEnabled = YES;
[self.myCollectionView addSubview:refreshControl];
self.myCollectionView.alwaysBounceVertical = YES;

并调用我在上面声明的相同函数 loadMoreData。

希望这对你有帮助...

请引用我的图片

enter image description here

关于ios - 使用分页显示 UICollectionView 的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32966611/

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