3

アップデート

私の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 が読み込まれません。

4

0 に答える 0