UITageViewController中的UIPageViewController

时间:2013-08-29 17:59:56

标签: iphone ios objective-c uitableview uipageviewcontroller

更新

在我的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加载。

0 个答案:

没有答案