开发者

UIScrollView and UIViews

I want to use a UIScrollView to display multiple UIViews as the user scrolls through the UIScrollView control. I'm not worried about showing Pagination just yet.

I already managed to implement some of it, but is not working the way I want it to.

Currently:

I have 3 ViewControllers with different nib files. The root view controller is the one with the UIScrollView, and it to load the rest of the view controllers.

NSMutableArray *controllers = [[NSMutableArray alloc] init];
    for (unsigned i = 0; i < kNumberOfPages; i++) {
        [controllers addObject:[NSNull null]];
    }
    self.viewControllers = controllers;
    [controllers release];

    scrollView.pagingEnabled = YES;
    scrollView.contentSize = CGSizeMake(scrollView.frame.size.width * kNumberOfPages, scrollView.frame.size.height);
    scrollView.showsHorizontalScrollIndicator = NO;
    scrollView.showsVerticalScrollIndicator = NO;
    scrollView.scrollsToTop = NO;
    scrollView.delegate = self;

    pageControl.numberOfPages = kNumberOfPages;
    pageControl.currentPage = 0;

    [self loadScrollViewWithPage:0];


- (void)loadScrollViewWithPage:(int)page {
    if (page == 0) {
        PageTwo *controller2 = [viewControllers objectAtIndex:page];
        if ((NSNull *)controller2 == [NSNull null]) {
            controller2 = [[PageTwo alloc] initWithPageNumber:page];
            [viewControllers replaceObjectAtIndex:page withObject:controller2];
            [controller2 release];
        }
        // add the controller's view to the scroll view
        if (nil == controller2.view.superview) {
            CGRect frame = scrollView.frame;
            frame.origin.x = frame.size.width * page;
            frame.origin.y = 0;
            controller2.view.frame = frame;
            [scrol开发者_开发百科lView addSubview:controller2.view];
        }
    }
    if (page == 1) {

    // replace the placeholder if necessary
    NewController *controller = [viewControllers objectAtIndex:page];
    if ((NSNull *)controller == [NSNull null]) {
        controller = [[NewController alloc] initWithPageNumber:page];
        [viewControllers replaceObjectAtIndex:page withObject:controller];
        [controller release];
    }
    // add the controller's view to the scroll view
    if (nil == controller.view.superview) {
        CGRect frame = scrollView.frame;
        frame.origin.x = frame.size.width * page;
        frame.origin.y = 0;
        controller.view.frame = frame;
        [scrollView addSubview:controller.view];
    }
    }

That's all fine... However, what I want it to do is to load the root nib first. But I'm not sure how to go about this. I know I have to increase the number of pages to 3, but when I initialize the controllers I don't know how to tell it that page == 0 should be the current view.

Any ideas?

Update:

Sigh, I overlooked something.. Didn't notice that if don't specify a page at level 0 it just shows the current view hah!

Silly me.


I overlooked something.. Didn't notice that if don't specify a page at level 0 it just shows the current view hah!

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜