【问题标题】:Start UIPageViewController on a given index在给定索引上启动 UIPageViewController
【发布时间】:2014-12-07 06:01:12
【问题描述】:

我正在使用以下代码来初始化我的 UIPageViewController:

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController {
    NSUInteger index = ((PageContentViewController*) viewController).pageIndex;

    if ((index == 0) || (index == NSNotFound)) {
        return nil;
    }

    index--;
    return [self viewControllerAtIndex:index];
}

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController {
    NSUInteger index = ((PageContentViewController*) viewController).pageIndex;

    if (index == NSNotFound) {
        return nil;
    }

    index++;
    if (index == [self.roosterWeken count]) {
        return nil;
    }
    return [self viewControllerAtIndex:index];
}

- (PageContentViewController *)viewControllerAtIndex:(NSUInteger)index {
    if (([self.roosterWeken count] == 0) || (index >= [self.roosterWeken count])) {
        return nil;
    }

    // Create a new view controller and pass suitable data.
    PageContentViewController *pageContentViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"PageContentViewController"];

    pageContentViewController.rooster = [self.roosterWeken objectAtIndex:index];
    pageContentViewController.pageIndex = index;

    return pageContentViewController;
}

- (NSInteger)presentationCountForPageViewController:(UIPageViewController *)pageViewController {
    return [self.roosterWeken count];
}

- (NSInteger)presentationIndexForPageViewController:(UIPageViewController *)pageViewController {
    return 0;
}

在我的异步 AFNetworking 函数中,我在 Complete 上调用以下命令

 PageContentViewController *startingViewController = [self viewControllerAtIndex:0];
 NSArray *viewControllers = @[startingViewController];
 [self.pageViewController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];

一切正常,但我怎样才能让我的 UIPageViewController 例如在点 3 上启动? (并且能够左右滚动,因为我们不在第一个点上)。

编辑

解决办法是:

PageContentViewController *startingViewController = [self viewControllerAtIndex:2];

【问题讨论】:

    标签: objective-c cocoa-touch ios7 uipageviewcontroller


    【解决方案1】:

    要从点 3 开始,请将演示文稿索引设置为 2:

    - (NSInteger)presentationIndexForPageViewController:(UIPageViewController *)pageViewController {
        return 2;
    }
    

    并告诉 pageViewController 在初始化时显示该 viewController:

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

    【讨论】:

    • 告诉 pageViewController 在 init 上显示 viewController 不起作用。 ViewController 仅包含 1 个对象:
    • 谢谢,我找到了将索引设置在我创建视图控制器的 2 上的解决方案。见编辑
    猜你喜欢
    • 2014-06-15
    • 1970-01-01
    • 2020-12-20
    • 1970-01-01
    • 2015-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多