0

我已经使用 UIPageViewController 在 webview 中加载大约 5 个图像。所以每当下面的代码行

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

, 被调用,返回对象是一个类对象(在我的例子中,类名是 LoadPage)。在我的代码中一切正常,但我在这里遇到了一些奇怪的问题并且有点不舒服。

所以我计划搬到一个班级而不是两个班级。

现在这个方法的返回类型将是 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

你不能返回 self ,pageViewController:viewControllerAfterViewController因为这会在视图控制器层次结构中产生一个循环。

您将 pageViewController 作为子视图控制器添加到 self,然后 pageViewController 将 self 作为子视图控制器(页面)添加到自身。那是不允许的!

于 2012-11-03T11:14:18.460 回答