更新
在我的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];
在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。我只是无法获取它的数据源方法,这意味着没有其他viewControllers加载。