1

UIPageViewController を作成する次のコードがあります。

- (void)viewDidLoad
{
[super viewDidLoad];

self.index = 0;

self.pageContainer = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil];

self.pageContainer.dataSource = self;
[[self.pageContainer view] setFrame:[[self view] bounds]];

DMSignUp1ViewController *first = [[DMSignUp1ViewController alloc] init];
DMSignUp2ViewController *second = [[DMSignUp2ViewController alloc] init];

self.viewControllers = [[NSArray alloc] initWithObjects:first, second, nil];

[self.pageContainer setViewControllers:self.viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];

[self addChildViewController:self.pageContainer];
[[self view] addSubview:[self.pageContainer view]];
[self.pageContainer didMoveToParentViewController:self];
}

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController
{
    if(self.index == 0) {
        return nil;
    }

    self.index--;
    return [self.viewControllers objectAtIndex:self.index];
}

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
{
    if(self.index == 1) {
        return nil;
    }

    self.index++;
    return [self.viewControllers objectAtIndex:self.index];
}

私は 2 つの UIViewControllers を持っています: DMSignUp1 と 2 を作成し、viewControllers 配列に配置します。

実行しようとすると、次のエラーが表示されます。

私が理解しているのは、View Controllerとして使用する配列を渡しているからです。では、配列内の最初のビュー コントローラーを使用するように設定するにはどうすればよいでしょうか。

4

2 に答える 2

2

使用しているときUIPageViewController spineLocation以外に設定している場合は、1 つのビュー コントローラーでのみ配列を渡すことができます。APIは、実際にはあまり明確ではありません。次に、が を介して要求したときに追加を提供します。UIPageViewControllerSpineLocationMid[self.pageContainer setViewControllers:ControllersviewControllersUIPageViewControllerdataSource

背骨の参照へのリンク

于 2013-07-24T15:50:07.743 に答える