如何使用UITableView进行垂直分页?

时间:2010-05-18 08:09:03

标签: iphone objective-c uitableview pagination

让我描述一下我要做的情况:

我有一个项目列表。当我进入ItemDetailView,这是一个UITableView。我想在这里做分页:当我向下滚动表格视图时,我想显示下一个项目。就像好读者一样:

Paging examples http://img245.yfrog.com/img245/2073/pricethat.jpg 目前,我正在尝试两种方法,但两者都不适合我。 1st:我让我的UITableView超过我的滚动视图,我有一个很好的动画,并且工作得很好,除非有时,UITableView将接收事件而不是我的滚动视图。因为,UITableView已经是一个UITableView,这种方法似乎不是一个好主意。这是一些代码:

- (void)applicationDidFinishLaunching:(UIApplication *)application {
    // a page is the width of the scroll view
    scrollView.pagingEnabled = YES;
    scrollView.contentSize = CGSizeMake(scrollView.frame.size.width,   scrollView.frame.size.height * kNumberOfPages);

    scrollView.showsHorizontalScrollIndicator = NO;
    scrollView.showsVerticalScrollIndicator = YES;
    scrollView.scrollsToTop = NO;
    scrollView.delegate = self;
    [self loadScrollViewWithPage:0];
}

- (void)loadScrollViewWithPage:(int)page {
    if (page < 0) return;
    if (page >= kNumberOfPages) return;

 [self.currentViewController.view removeFromSuperview];
 self.currentViewController = [[[MyNewTableView alloc]initWithPageNumber:page] autorelease];

    if (nil == currentViewController.view.superview) {
        CGRect frame = scrollView.frame;
        [scrollView addSubview:currentViewController.view];
    }
}

- (void)scrollViewDidScroll:(UIScrollView *)sender {
    if (pageControlUsed) {
        return;
    }

    CGFloat pageHeight = scrollView.frame.size.height;
    int page = floor((scrollView.contentOffset.y - pageHeight / 2) / pageHeight) + 1;
    [self loadScrollViewWithPage:page];
}
- (IBAction)changePage:(id)sender {
    int page = pageControl.currentPage;
    [self loadScrollViewWithPage:page];

 // update the scroll view to the appropriate page
    CGRect frame = scrollView.frame;
    [scrollView scrollRectToVisible:frame animated:YES];

    pageControlUsed = YES;
}

我的第二种方法是:使用pop和push的navigationController来弹出当前的ItemDetail并在其上面推一个新的。但是这种方法不会像第一种方法那样给我一个很好的向下滚动动画。

因此,我们将非常感谢能够用这两种方法完成任务的答案

1 个答案:

答案 0 :(得分:1)

如果您不使用任何UITableView功能(滚动除外),您只需将自定义视图添加到UIScrollView ...并启用页面滚动。