2014-01-30 85 views
0

我有一个UISplitView像设计(不是真的UISplitView,我用View container来模仿它)。最初的UICollectionView页面是第二页而不是第一页

左侧容器有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; 
} 

感谢。

+0

你在哪里设置collectionView的内容? –

+0

我没有设置内容。它使用默认的一个。我已经发现了这个问题。你是正确的,我应该使用'[contentScrollView scrollRectToVisible:pageRect animated:YES];'设置位置。但我不应该把它放在ViewDidLoad中。由于这是'left container'的代表,所以我应该把它放在'delegate'函数中。然后它工作。谢谢! – user890207

+0

很好,你明白了。其实,我为你创造了一个榜样。我即将发布它。但它能够解决它的好处。 –

回答

0

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

[contentScrollView scrollRectToVisible:pageRect animated:YES]; 

以下是我创建了解决这个问题的例子:

您可以下载代码的形式Here

下载源后,只需添加下面的方法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”方法调用以上方法。

+0

我试过这段代码,它不会起任何作用。奇怪。 – user890207

+0

我的意思是pageRect是第一页的框架。你试过了吗?如果是这样,而不是工作,那么请在这里发布你的代码。会尽力帮助你。 –

+0

我已更新帖子添加相关代码。如果您需要额外的代码,请告诉我。谢谢。 – user890207

相关问题