我有一个 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"方法中以上方法。