GIFを投稿したかったのですが、どうやら評判が足りないようです。まあ、何でも; UIPageViewController を使用していましたが、何らかの理由で、UIScrollView を使用し、UITableViewControlllers のビューを対応するオフセット (ページ) に追加することで、より手動のソリューションを使用することにしました。各ページ (テーブル ビュー コントローラーのビュー) に 4 つの UItableViewControllers があり、これらはすべて子ビュー コントローラーとしてコンテナー ビュー コントローラー (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);
}
}