初始的UicollectionView页面是第二页,而不是第一页



我有一个 UISplitView喜欢设计(不是真正的 UISplitView,我使用 View container来模仿它)。

左侧容器具有table view,右侧容器具有collection view

如果我单击左容器中的tableview cell,则右侧collection view将相应更改。

collection view是分页的,它总是有两页。

如果我滚动到collection view的第二页,现在单击左容器中的新table view cell,它将在右侧容器中加载正确的collection view,但它在第二页中而不是第一页!<<

我四处搜索,找不到解决方案。

我感谢任何建议。


更新:添加了相关代码。

以下代码在right container中。

- (void)viewDidLoad
{
[super viewDidLoad];
[self setup];
self.collectionView.delegate = self;
self.pageControl.currentPage = 0;
[self.collectionView scrollRectToVisible:CGRectMake(0, 0, self.collectionView.frame.size.width, self.collectionView.frame.size.width) animated:NO];
}

函数setup定义如下:

-(void)setup
{    
self.collectionView.pagingEnabled = YES;
self.collectionView.directionalLockEnabled = YES;
self.collectionView.bounces = NO;
self.collectionView.showsHorizontalScrollIndicator = NO;
}

谢谢。

当用户在左容器中选择一行时,为什么不能编写代码滚动滚动视图以显示第一页的框架。

[contentScrollView scrollRectToVisible:pageRect animated:YES];

以下是我创建的示例来解决此问题:

您可以在此处下载代码

下载源后,只需将以下方法添加到mlkpageviewcontroller.m

- (void)showPageAtIndex:(NSInteger)index
{
    if( index >= self.contentVCs.count )
        return;
    UIView *contentView = ((UIViewController *)[self.contentVCs objectAtIndex:index]).view;
    CGRect pageRect;
    if( mlkPageControl.currentPage == FIRST_PAGE || mlkPageControl.currentPage == LAST_PAGE )
    {
        pageRect = CGRectMake( (index * CONTENT_VIEW_SPACING) + index *  contentView.frame.size.width, contentScrollView.frame.origin.y , contentScrollView.frame.size.width, contentScrollView.frame.size.height);
    }
    else
    {
        pageRect = CGRectMake( (index * CONTENT_VIEW_SPACING) + index *  contentView.frame.size.width - CONTENT_VIEW_SPACING, contentScrollView.frame.origin.y , contentScrollView.frame.size.width, contentScrollView.frame.size.height);
    }
    [contentScrollView scrollRectToVisible:pageRect animated:YES];
}

从传递页面索引的mlkpageViewController的" ViewDidload"方法中以上方法。

相关内容

  • 没有找到相关文章

最新更新