2012-09-25 2 views
1

내 프로젝트에서 페이지 스크롤 기능을 구현하려고합니다. 스토리 보드 (및 ARC)와 함께 iOS 5 용으로 개발합니다. 이것은 내가 내 스토리 보드에서 한 것입니다 :viewController.view.superview가 0입니다.

enter image description here

(왼쪽) 첫 번째의 ViewController가있는 ScrollView와 pageControl 있습니다. 그 클래스는 GlobalDashboardViewController이며, DashboardViewController (상속은 UIViewController)에서 상속됩니다. 나머지 두 컨트롤러는 식별자가있는 간단한 UIViewController입니다 (MainDashboardSecondaryDashboard). GlobalDashboardViewController.m에서

는 childViewControllers를 얻을 수있는 단지의 viewDidLoad,이 :

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    [self addChildViewController:[self.storyboard instantiateViewControllerWithIdentifier:@"MainDashboard"]]; 
    [self addChildViewController:[self.storyboard instantiateViewControllerWithIdentifier:@"SecondaryDashboard"]]; 
} 

DashboardViewController.m는 조금 더 복잡하다. 여기에 가장 중요한 방법은 다음과 같습니다

- (void)viewDidLoad 
{ 
    // Calling the viewDidLoad above to populate the childViewControllers array 
    [super viewDidLoad]; 

    [self.scrollView setPagingEnabled:YES]; 
    [self.scrollView setScrollEnabled:YES]; 
    [self.scrollView setShowsHorizontalScrollIndicator:NO]; 
    [self.scrollView setShowsVerticalScrollIndicator:NO]; 
    [self.scrollView setDelegate:self]; 
} 


-(void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 

    self.pageControl.currentPage = 0; 
    _page = 0; 
    [self.pageControl setNumberOfPages:[self.childViewControllers count]]; 

    UIViewController *viewController = [self.childViewControllers objectAtIndex:self.pageControl.currentPage]; 
    if (viewController.view.superview != nil) { 
     [viewController viewWillAppear:animated]; 
    } 

    self.scrollView.contentSize = CGSizeMake(scrollView.frame.size.width * [self.childViewControllers count], scrollView.frame.size.height); 
} 

이 다른 방법의 많음,하지만 난 여기에 내 문제이기 때문에 그들이 관련성 생각하지 않는다 : 응용 프로그램의 출시가, 그리고 내가 보는있는 ScrollView와 pageControl . 배경은 어두운 회색입니다. GlobalDashboard viewController에서 설정했습니다. 올바르게 스크롤 할 수 있으며 pageControl이 업데이트됩니다. 하지만 다른 견해는 보이지 않습니다. 내가 viewWillAppear에서 경우에 중단 점을 배치하고 viewController 볼 때, (나는 스토리 보드의 컨트롤러에 준 이름 인 Dashboard Page 1) 올바른 이름의,하지만 당신이 할 수의 _view 속성은 을 0x00000000 보여줍니다 여기 참조 :

enter image description here

그래서, 나는 결코 실제로 viewControllers을 보여주는 마법의 일부가 일어나는 곳이다는 경우 내에서 얻을 ...

제 작품은 여기에서 찾을 수있는 예제 프로젝트를 기반으로합니다 : PageViewController. 나는 그것을 실행할 때 완벽하게 작동합니다. 왜 내가 내 프로젝트에서 제대로 작동하지 않는지 전혀 모른다.

아이디어가 있으십니까?

감사

답변

1

당신은 뷰 자체 ([self.view addSubview:/*Your child controller's view*/])를 추가하지 않습니다. 연결된 프로젝트가 PagerViewController.m의 - (void)loadScrollViewWithPage:(int)page에 있습니다.

+0

답장을 보내 주셔서 감사합니다. 글쎄, 나도 할 수 있지만 내 실수는 ** ** 실제로 loadScrollViewWithPage **를 호출하는 것을 잊었다 : * viewWillAppear에서 ... 나는 viewWillAppear *에 너무 집중했다. 나를 올바른 방향으로 가리키기위한 많은 것들! – rdurand