アップデート
私のtableView:cellForRowAtIndexPath:
では、これを行うと動作するようになります:
[self addChildViewController:scroller];
[cell.contentView addSubview:scroller.view];
[scroller didMoveToParentViewController:self];
ただし、セルの再利用のため、最初の行を 5 つの画像でスワイプすると、最初の行が画面外になるようにテーブルを下にスクロールし、最初の行に戻ると、そのスライドショーは最初の画像にリセットされます。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~
画面の幅/高さ全体を占める UITableView があります。
各セルで、ユーザーが一連の画像を水平方向にスクロールできるようにしたいと考えています。
スクロールと遅延読み込みを処理するために UIPageViewController を使用しています。最初の画像を完全にロードできますが、次の画像にスクロールしようとすると、UIPageViewController の dataSource メソッドが呼び出されません。
dataSource メソッドを完全に削除すると、各セルの画像はスクロール/移動しません。ただし、dataSource メソッドを配置すると、少なくとも跳ねる動きを得ることができますが、前後に何も読み込まれません。
の-tableView:cellForRowAtIndexPath:
// MyScrollerPageViewController is a subclass of UIPageViewController
MyScrollerPageViewController *scroller = [[MyScrollerPageViewController alloc] initWithItems:self.items];
[cell.contentView addSubview:scroller.view];
In MyScrollerPageViewController
(UIPageViewController のサブクラス)
- (void)viewDidLoad
{
[super viewDidLoad];
self.dataSource = self;
self.delegate = self;
MyImageViewController *viewController = [[MyImageViewController alloc] initWithImage:self.items[0]];
[self setViewControllers:@[viewController]
direction:UIPageViewControllerNavigationDirectionForward
animated:false
completion:nil];
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController
{
// THIS NEVER GETS CALLED
NSLog(@"BEFORE!");
return nil;
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
{
// THIS NEVER GETS CALLED
NSLog(@"AFTER!");
return nil;
}
繰り返しますが、最初の画像を正常にロードできます。これは、UIPageViewController のサブクラスが最初の viewController を正常にロードしていることを示しています。そのデータソース メソッドを起動することができません。つまり、他の viewController が読み込まれません。