Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何使用UITableView进行垂直分页?_Iphone_Objective C_Uitableview_Pagination - Fatal编程技术网

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

Iphone 如何使用UITableView进行垂直分页?,iphone,objective-c,uitableview,pagination,Iphone,Objective C,Uitableview,Pagination,让我描述一下我正在尝试的情况: 我有一份物品清单。当我进入ItemDetailView时,它是一个UITableView。我想在这里进行分页,比如:当我向下滚动出表视图时,我想显示下一项。就像《好读者》: 目前,我正在尝试两种方法,但这两种方法都不适合我。 第一:我让我的UITableView覆盖了我的滚动视图,我有一个很好的动画,效果很好,除了有时候,UITableView会接收事件而不是我的滚动视图。因为UITableView已经是UITableView了,所以这种方法似乎不是个好主意。下

让我描述一下我正在尝试的情况:

我有一份物品清单。当我进入ItemDetailView时,它是一个UITableView。我想在这里进行分页,比如:当我向下滚动出表视图时,我想显示下一项。就像《好读者》:

目前,我正在尝试两种方法,但这两种方法都不适合我。 第一:我让我的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;
}
-(void)applicationdFinishLaunching:(UIApplication*)应用程序{
//页面是滚动视图的宽度
scrollView.PaginEnabled=是;
scrollView.contentSize=CGSizeMake(scrollView.frame.size.width,scrollView.frame.size.height*kNumberOfPages);
scrollView.showsHorizontalScrollIndicator=否;
scrollView.showsVerticalScrollIndicator=是;
scrollView.scrollsToTop=否;
scrollView.delegate=self;
[带页面的自加载滚动视图:0];
}
-(void)加载滚动视图带页面:(int)页面{
如果(第<0页)返回;
如果(第>=kNumberOfPages)返回;
[self.currentViewController.view从SuperView移除];
self.currentViewController=[[[MyNewTableView alloc]initWithPageNumber:page]自动释放];
if(nil==currentViewController.view.superview){
CGRect frame=scrollView.frame;
[scrollView添加子视图:currentViewController.view];
}
}
-(无效)scrollViewDidScroll:(UIScrollView*)发送方{
如果(已使用页面控制){
返回;
}
CGFloat pageHeight=scrollView.frame.size.height;
int page=floor((scrollView.contentOffset.y-pageHeight/2)/pageHeight)+1;
[带页面的自加载滚动视图:第页];
}
-(iAction)更改页:(id)发件人{
int page=pageControl.currentPage;
[带页面的自加载滚动视图:第页];
//将滚动视图更新到相应的页面
CGRect frame=scrollView.frame;
[scrollView scrollRectToVisible:帧动画:是];
pageControlUsed=是;
}
我的第二种方法是:使用navigationController的pop和push来弹出当前的ItemDetail,并在其上推送一个新的ItemDetail。但是这种方法不会像第一种方法那样给我一个很好的向下滚动动画


因此,如果您不使用任何UITableView功能(滚动除外),您可以简单地将自定义视图添加到UIScrollView…并启用页面滚动。

我上传的代码只是我真实项目的一个实验项目。但是,在我的工作中,我必须使用tableview,因为我必须列出该项目的注释列表。我不是很熟悉所有的obj-C函数,所以我更喜欢把它分开,做一些实验