首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多视图UIPageViewController

多视图UIPageViewController
EN

Stack Overflow用户
提问于 2015-03-14 23:18:59
回答 1查看 880关注 0票数 1

我需要一个动态的UIPageViewController,页面的数量取决于数组中条目的数量。

我对此有两种看法。一个用于第一页,另一个用于其他页面。它将始终超过2页(我的数组中的两个项)。

我试着用固定值来测试。但是传呼是不对的。索引不正确。

第一个问题,presentationCountForPageViewController _vc计数返回零;

第二个问题,分页是不对的。我到了最后一页,第一页就不见了,所以如果我回到第二页,总是.

求你了救命!

代码语言:javascript
复制
    - (void)viewDidLoad {
        [super viewDidLoad];

        FirstViewController *agenda = (FirstViewController*)[self viewControllerAtIndex:0];
        [_vc addObject:@"FirstViewController"];
        [_vc addObject:@"SecondViewController"];


        self.pageViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"PageViewController"];
        self.pageViewController.dataSource = self;


        NSArray *viewControllers = [NSArray arrayWithObject:agenda];

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


        [self addChildViewController:_pageViewController];
        [self.view addSubview:_pageViewController.view];
        [self.pageViewController didMoveToParentViewController:self];

        UIPageControl *pageControlAppearance = [UIPageControl appearanceWhenContainedIn:[UIPageViewController class], nil];
        pageControlAppearance.pageIndicatorTintColor = [UIColor lightGrayColor];
        pageControlAppearance.currentPageIndicatorTintColor = [UIColor darkGrayColor];


    }




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

    NSUInteger index = [_vc indexOfObject:viewController];

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

    index--;

    //notice here I call my instantiation method again essentially duplicating work I have already done!
    return [self viewControllerAtIndex:index];
}

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
{
    NSUInteger index = [_vc indexOfObject:viewController];

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

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


#pragma mark - Page View Controller Data Source

- (UIViewController *)viewControllerAtIndex:(NSUInteger)index
{

    if (index == 0){
        FirstViewController *firstController = [self.storyboard instantiateViewControllerWithIdentifier:@"FirstViewController"];

        return firstController;
    }
    else{
        SecondViewController *secondController = [self.storyboard instantiateViewControllerWithIdentifier:@"SecondViewController"];
        return secondController;
    }

}

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

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

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-15 18:33:58

根据评论/聊天,有几件事需要解决:

  1. 您需要实例化_vc数组
  2. 您需要向此数组中添加UIViewController对象,而不是当前使用的字符串。
  3. 您需要修改viewControllerBeforeViewControllerviewControllerAfterViewController方法,以从_vc数组返回相关元素,记住测试索引是否仍在数组的范围内,以防止在最终页面之后或在第一个(日程)页面之前滑动。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29055404

复制
相关文章

相似问题

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