从UIPageViewController中删除页面指示器

时间:2014-08-27 18:26:13

标签: ios objective-c uipageviewcontroller uipagecontrol

我在iOs应用程序中使用页面视图控制器。 如何从此控制器中删除点?

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    self.dontShowChecked = NO;
    self.imagesArray = @[  ..];

    self.textsArray = @[ ........
                        ];


    // Create page view controller
    self.pageViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"WTPageController"];
    self.pageViewController.dataSource = self;

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

    // Change the size of page view controller
    CGFloat delta = [[PSDeviceInfo sharedInstance] is_iPhone] ? 50. : 50;

    self.pageViewController.view.frame = CGRectMake(0, 40., self.view.frame.size.width, self.view.frame.size.height - delta);
    [self.view addSubview:_pageViewController.view];
    [self.pageViewController didMoveToParentViewController:self];
}

点似乎是自动添加自身并干扰该区域中的其他UI元素。我该如何完全删除它们?

4 个答案:

答案 0 :(得分:20)

一旦UIPageViewController数据源实现以下方法,就会添加点:

presentationCountForPageViewController:
presentationIndexForPageViewController:

避免实现那些摆脱UIPageControl点。

答案 1 :(得分:1)

页面可以动态增加或减少

所以我使用下面的方法手动隐藏组件本身。

func togglePageControl(pageCount: Int, threshold: Int = 1) {

    var hidden = true

    if pageCount > threshold {

        hidden = false

    }

    for subView in self.view.subviews {
        if subView is UIScrollView {
            subView.frame = self.view.bounds
        } else if subView is UIPageControl {
            subView.isHidden = hidden
        }
    }
}

这应该从

调用
 public func presentationCount(for pageViewController: UIPageViewController) -> Int {

     togglePageControl(pageCount: pages.count)

     // or togglePageControl(pageCount: pages.count, threshold: 5)

     return pages.count
 }

答案 2 :(得分:0)

仅当数据源实现以下方法时,才会显示页面控件:

presentationCount:
presentationIndex:

答案 3 :(得分:0)

只要您实现presentationCount和presentationIndex的UIPageViewControllerDataSource函数,它就会自动出现,但是就我而言,它们来自服务器,所以我不知道会有多少,我只想隐藏它们(如果是一个)。

因此,只需在presentationCount上返回零就可以了。