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
,你使用frame
s 操作。
.xib 说它正在使用 AutoLayout,但您的 contentSize 建议有效。我会考虑切换到 UICollectionView。谢谢!以上是关于iOS:无法在分页的 UIScrollView 中的 UITableView 之间滚动的主要内容,如果未能解决你的问题,请参考以下文章
UITextView 在分页 UIScrollView 内滚动不起作用
UIScrollView 在分页时确定 scrollViewDidEndDragging 上的滚动方向