首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IOS - UIPageViewController使用卷页效果转到前一页,并在每页上显示页码

IOS - UIPageViewController使用卷页效果转到前一页,并在每页上显示页码
EN

Stack Overflow用户
提问于 2016-10-24 20:58:51
回答 1查看 499关注 0票数 0

我是第一次使用UIPageViewController,

我想使应用程序,向左和向右滑动相同的看法。我只使用了一个uitableview来无限滑动uipageviewcontroller。

使用滚动效果可以很好地工作,但是当我使用页面卷曲效果时,它只允许向右滑动,不能转到上一页。

以下是我的PageViewController文件代码:

代码语言:javascript
复制
- (void)viewDidLoad {
    [super viewDidLoad];
    self.dataSource = self;
    self.delegate = self;
    [self didMoveToParentViewController:self];
    _counter = 0;

    [self setViewControllers:@[[self.storyboard instantiateViewControllerWithIdentifier:@"memoTable"]] direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:nil];

    // Do any additional setup after loading the view.
}

- (BOOL)prefersStatusBarHidden {
    return YES;
}

#pragma mark PageViewController delegate method

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController
{
    NSLog(@"Child controller counter before  = %d", _counter);

    if ([viewController isKindOfClass:[PageController class]])
        return nil;

    if(_counter < 1) {
        return nil;
    }

    self.view.backgroundColor = [UIColor lightGrayColor];
    return [self.storyboard instantiateViewControllerWithIdentifier:@"memoTable"];
}

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
{
    NSLog(@"Child controller counter after  = %d", _counter);
    if ([viewController isKindOfClass:[PageController class]])
        return nil;
    return [self.storyboard instantiateViewControllerWithIdentifier:@"pageView"];
}

那么如何使用页面卷曲效果和左右滑动来实现这一点呢?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2016-10-24 21:45:49

因为你需要的是单边无穷大,你需要检查你的index,如果它是0而不是return nil

PageViewController**:**的一些检查方法

代码语言:javascript
复制
// Create the data model.
        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
        _pageData = [[dateFormatter monthSymbols] copy];

- (DataViewController *)viewControllerAtIndex:(NSUInteger)index storyboard:(UIStoryboard *)storyboard {
    // Return the data view controller for the given index.
    if (([self.pageData count] == 0) || (index >= [self.pageData count])) {
        return nil;
    }

    // Create a new view controller and pass suitable data.
    DataViewController *dataViewController = [storyboard instantiateViewControllerWithIdentifier:@"DataViewController"];
    dataViewController.dataObject = self.pageData[index];
    return dataViewController;
}

- (NSUInteger)indexOfViewController:(DataViewController *)viewController {
    // Return the index of the given data view controller.
    // For simplicity, this implementation uses a static array of model objects and the view controller stores the model object; you can therefore use the model object to identify the index.
    return [self.pageData indexOfObject:viewController.dataObject];
}

#pragma mark - Page View Controller Data Source

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController
{
    NSUInteger index = [self indexOfViewController:(DataViewController *)viewController];
    if ((index == 0) || (index == NSNotFound)) {
        return nil;
    }

    index--;
    return [self viewControllerAtIndex:index storyboard:viewController.storyboard];
}

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
{
    NSUInteger index = [self indexOfViewController:(DataViewController *)viewController];
    if (index == NSNotFound) {
        return nil;
    }

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

你必须管理一个数组,才能识别index | count中的每一件事。

在上面的例子中,self.pageData是我用来管理页面的数组。如果你需要任何帮助,请告诉我。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40219112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档