我有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;
}
感谢。
答案 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”方法调用上面的方法。