0

Webview に約 5 つの画像を読み込むために UIPageViewController を使用しました。したがって、以下のコード行はいつでも

- (UIViewController *)pageViewController:(UIPageViewController *) pageViewController viewControllerBeforeViewController:(UIViewController *)viewController

が呼び出され、返されるオブジェクトはクラス オブジェクトです (私の場合、クラス名は LoadPage です)。私のコードではすべて正常に動作しますが、ここで奇妙な問題に直面しており、少し不快です。

そこで、2 クラスではなく 1 クラスに移行する予定でした。

このメソッドの戻り値の型は self になります。

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
{
    return self;

}

私は正しいですか?

しかし、UIPageViewController を初期化しようとすると、特定の行でアプリケーションがクラッシュします。

- (void) createViewControllers {

    self.pageViewController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStylePageCurl navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options: nil];

    pageViewController.delegate = self; 
    pageViewController.dataSource = self;

    NSArray*    nextScreens = [NSArray arrayWithObject:self];
    [pageViewController setViewControllers: nextScreens direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];

    [self addChildViewController:pageViewController];
    [self.view addSubview:pageViewController.view];
    [[self view] addSubview:[pageViewController view]];     //CRASH
    [pageController didMoveToParentViewController:self];

    CGRect pageViewRect = self.view.bounds;
    pageViewRect = CGRectInset(pageViewRect,0, 0);
    pageViewController.view.frame = pageViewRect;    

    self.view.gestureRecognizers = pageViewController.gestureRecognizers; 

}
4

1 に答える 1

0

pageViewController:viewControllerAfterViewControllerビューコントローラ階層にサイクルが発生するため、自分自身を返すことはできません。

pageViewControllerを子ビューコントローラーとしてselfに追加し、後でpageViewControllerがselfを子ビューコントローラー(ページ)として自分自身に追加します。それは許可されていません!

于 2012-11-03T11:14:18.460 に答える