2014-01-30 134 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

相關問題