我想发布一个 gif,但显然我没有足够的声誉。哦,好吧,无论如何;我使用的是 UIPageViewController,但出于某种原因,我决定采用更手动的解决方案,即使用 UIScrollView 并将 UITableViewControlllers 的视图添加到相应的偏移量(页面)。我在每个页面上有 4 个 UItableViewController(表视图控制器的视图),所有这些都作为子视图控制器添加到容器视图控制器(具有 UIScrollView)中。
实际问题是当我进行切换时,表格视图开始拒绝一直向下移动,并且当滚动结束时,最终表格视图单元格的一部分在屏幕末端保持修剪。
所以,想问问有没有人遇到过这样的事情,知道如何摆脱这个。我知道我总是可以使用图书馆,但我想学习。这是一些代码:
_containerScrollView = [[UIScrollView alloc] initWithFrame:self.view.frame];
_containerScrollView.contentSize = CGSizeMake(_containerScrollView.frame.size.width * 4, 0.0f);
_containerScrollView.pagingEnabled = YES;
[self.view addSubview:_containerScrollView];
UITableViewController *vc1 = [[UIViewController alloc] init];
UITableViewController *vc2 = [self.storyboard instantiateViewControllerWithIdentifier:@"trendingViewController"];
UITableViewController *vc3 = [self.storyboard instantiateViewControllerWithIdentifier:@"placesViewController"];
UITableViewController *vc4 = [self.storyboard instantiateViewControllerWithIdentifier:@"favoritesViewController"];
self.rallyViewControllers = [NSArray vc1, vc2, vc3, vc4, nil];
[self addViewControllers];
其他方法;
- (void)addViewControllers{
if (self.rallyViewControllers == nil) {
return;
}
for (int i = 0; i < [self.rallyViewControllers count]; i++) {
UIViewController* viewController = [self.rallyViewControllers objectAtIndex:i];
[self addChildViewController:viewController];
[viewController didMoveToParentViewController:self];
[_containerScrollView addSubview:viewController.view];
}
}
这被称为viewDidLayoutSubviews
- (void)configureFrames{
if (self.rallyViewControllers == nil) {
return;
}
CGFloat width = _containerScrollView.frame.size.width;
CGFloat height = _containerScrollView.frame.size.height;
for (int i = 0; i < [self.rallyViewControllers count]; i++) {
UIViewController *viewController = [self.rallyViewControllers objectAtIndex:i];
viewController.view.frame = CGRectMake(i * width, 0.0f, width, height);
}
}