iOS:无法在分页的 UIScrollView 中的 UITableView 之间滚动

Posted

技术标签:

【中文标题】iOS:无法在分页的 UIScrollView 中的 UITableView 之间滚动【英文标题】:iOS: Can't scroll between UITableViews in paged UIScrollView 【发布时间】:2014-03-20 20:14:40 【问题描述】:

我有一个 UIScrollView,我想在其中包含许多 UITableView,每个都是一个页面。我已将它们添加到我的滚动视图中,并验证 UITableViews 的框架设置是否正确。第一个 UITableView 显示正确,但它不会让我水平滚动查看其他。这是我在表格视图中使用的代码:

scrollView.delegate=self;
scrollView.scrollEnabled=YES;
tableViews = [[NSMutableArray alloc] initWithCapacity:recipOrgs.count];
for (NSDictionary *orgDict in recipOrgs) 

    int index = [recipOrgs indexOfObject:orgDict];


    NSLog(@"Creating table view for index: %d",index);
    CGRect frame;
    frame.origin.x = self.scrollView.frame.size.width * index;
    frame.origin.y = 0;
    frame.size = self.scrollView.frame.size;

    OrganizationTableView *tableView = [[OrganizationTableView alloc] init];

    tableView.index=index;
    tableView.parentCon=self;
    tableView.dataSource=tableView;
    tableView.delegate=tableView;

    [tableViews addObject:tableView];
    [scrollView addSubview:tableView];
    [tableView setFrame:frame];


任何想法为什么这不起作用?正如我所提到的,我检查了 UITableView 原点的 x 值,我得到了 0、320、640 等,正如我所期望的那样。

【问题讨论】:

为什么要在滚动视图中创建多个表格视图?使用带有部分的单个 tableview。 我想水平滚动。 使用 UICollectionview 代替 UITableview。 【参考方案1】:

您可能忘记为您的scrollView 设置contentSize

scollView.contentSize = CGSizeMake(recipOrgs * CGRectGetWidth(scrollView.frame), CGRectGetHeight(scrollView.frame));

但是您可能应该考虑使用UICollectionView 而不是UIScrollView,然后您可以免费获得重用逻辑,并且您不必担心contentSize

【讨论】:

即使在使用 AutoLayout 时你也会这样做? 嗯,不,你没有,但我在你提供的代码中没有看到autolayout,你使用frames 操作。 .xib 说它正在使用 AutoLayout,但您的 contentSize 建议有效。我会考虑切换到 UICollectionView。谢谢!

以上是关于iOS:无法在分页的 UIScrollView 中的 UITableView 之间滚动的主要内容,如果未能解决你的问题,请参考以下文章

带有 uiscrollview 分页的 iOS 渐变动画

UITextView 在分页 UIScrollView 内滚动不起作用

UIScrollView 在分页时确定 scrollViewDidEndDragging 上的滚动方向

如何使用 Scrapy FormRequest 在分页的 .asp 站点上模拟下一页链接请求

启用分页的 UISCrollview

在启用分页的情况下使用 UIScrollView