2014-01-30 3 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에 대한 contentsize는 어디에 설정합니까? –

+0

내용을 설정하지 않았습니다. 기본값을 사용합니다. 나는 그 문제를 알아 냈다. 위치를 설정하려면'[contentScrollView scrollRectToVisible : pageRect animated : YES];를 사용해야합니다. 하지만 ViewDidLoad에 넣으면 안됩니다. 이것은'왼쪽 컨테이너 (left container) '의 델리게이트이므로'delegate' 함수에 넣어야합니다. 그렇다면 그것은 작동합니다. 감사! – user890207

+0

당신이 얻은 것이 대단합니다. 사실, 나는 너에게 모범을 보였다. 나는 그것을 게시하려하고있다. 그러나 당신이 그것을 해결할 수 있다는 것이 좋다. –

답변

0

사용자가 왼쪽 컨테이너에서 행을 선택할 때마다 첫 번째 페이지의 프레임을 표시하도록 스크롤보기를 스크롤하는 코드를 작성할 수없는 이유는 무엇입니까? 단지

- (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.m

에 다음과 같은 방법을 추가

당신은 소스를 다운로드 한 후 코드 형태 Here

을 다운로드 할 수 있습니다

[contentScrollView scrollRectToVisible:pageRect animated:YES]; 

다음

내가이 문제를 해결하기 위해 만든 예이다

MLKPageViewController의 "ViewDidLoad"메서드에서 위의 메서드를 호출하여 페이지 인덱스를 전달합니다.

+0

이 코드를 사용해 보았지만 아무 효과가 없습니다. 이상하게. – user890207

+0

첫 번째 페이지의 프레임이되도록 pageRect를 의미합니다. 그걸 시도 했니?그렇다면 여기에 코드를 게시하십시오. 당신을 도우 려합니다. –

+0

관련된 코드를 추가하기 위해 게시물을 업데이트했습니다. 추가 코드가 필요한지 알려주십시오. 감사. – user890207

관련 문제