为了账号安全,请及时绑定邮箱和手机立即绑定

是否可以在UIPageViewController中以编程方式翻页?

是否可以在UIPageViewController中以编程方式翻页?

一只名叫tom的猫 2019-08-30 16:50:07
是否可以以编程方式翻页UIPageViewController?
查看完整描述

3 回答

?
HUWWW

TA贡献1874条经验 获得超12个赞

是的,可以使用以下方法:


- (void)setViewControllers:(NSArray *)viewControllers 

                 direction:(UIPageViewControllerNavigationDirection)direction 

                  animated:(BOOL)animated 

                completion:(void (^)(BOOL finished))completion;`

这与在页面上设置第一个视图控制器的方法相同。类似,您可以使用它来转到其他页面。


不知道为什么viewControllers是数组,而不是单个视图控制器?


那是因为页面视图控制器可以有一个“书脊”(就像在iBooks中一样),一次显示2页内容。如果一次显示1页内容,则只传入1元素数组。


Swift中的一个例子:


pageContainer.setViewControllers([displayThisViewController], direction: .Forward, animated: true, completion: nil)



查看完整回答
反对 回复 2019-08-30
?
慕莱坞森

TA贡献1810条经验 获得超4个赞

这是单个分页视图的另一个代码示例。这里省略了viewControllerAtIndex的实现,它应该返回给定索引的正确视图控制器。


- (void)changePage:(UIPageViewControllerNavigationDirection)direction {

    NSUInteger pageIndex = ((FooViewController *) [_pageViewController.viewControllers objectAtIndex:0]).pageIndex;


    if (direction == UIPageViewControllerNavigationDirectionForward) {

        pageIndex++;

    }

    else {

        pageIndex--;

    }


    FooViewController *viewController = [self viewControllerAtIndex:pageIndex];


    if (viewController == nil) {

        return;

    }


    [_pageViewController setViewControllers:@[viewController]

                                  direction:direction

                                   animated:YES

                                 completion:nil];

}

可以通过调用更改页面


[self changePage:UIPageViewControllerNavigationDirectionReverse];

[self changePage:UIPageViewControllerNavigationDirectionForward];


查看完整回答
反对 回复 2019-08-30
  • 3 回答
  • 0 关注
  • 606 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信