【问题标题】:Remove the page indicator from UIPageViewController从 UIPageViewController 中移除页面指示器
【发布时间】:2014-08-27 18:26:13
【问题描述】:

我在 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 元素。如何完全删除它们?

【问题讨论】:

标签: ios objective-c uipageviewcontroller uipagecontrol


【解决方案1】:

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

presentationCountForPageViewController:
presentationIndexForPageViewController:

避免实现这些以摆脱 UIPageControl 点。

【讨论】:

    【解决方案2】:

    当页面可以动态增加或减少

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

    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
     }
    

    【讨论】:

      【解决方案3】:

      只有在数据源实现这些方法时才会显示页面控件:

      presentationCount:
      presentationIndex:
      

      【讨论】:

        【解决方案4】:

        只要你实现了presentationCount和presentationIndex的UIPageViewControllerDataSource函数,它就会自动出现,但在我的例子中,它们来自服务器,所以我不知道会有多少,我只想隐藏它们,如果它是一个。

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-04-11
          • 1970-01-01
          • 1970-01-01
          • 2020-04-11
          • 1970-01-01
          • 2012-12-22
          • 1970-01-01
          • 2013-02-01
          相关资源
          最近更新 更多