【问题标题】:How to remove UIPageControl from navigationBar?如何从导航栏中删除 UIPageControl?
【发布时间】:2015-10-17 15:22:12
【问题描述】:

我有一个显示不同类别的表格视图。 选取其中一个类别,它对显示适当子类别的 PageViewController 执行(推送)segue。 我决定在标题下的导航栏中显示 UIPageControl,它可以正常工作,但回到之前的控制器,我无法删除这些点,因此它们也错误地出现在呈现的 VC 中。

我是如何实现自定义导航栏的:

class MyClass {

//MARK: - Outlets

private var pageControl: UIPageControl?
var rLNavItem: UINavigationItem?

//MARK: - Life cycle

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)
    let childView = self.navigationController?.childViewControllers.last
    childView?.navigationItem.rightBarButtonItem = // ...
    childView?.navigationItem.titleView = //...
    self.rLNavItem = childView?.navigationItem

    navigationController(self.navigationController!, willShowViewController: childView!, animated: true)
}

//MARK: - Navigation delegate

func navigationController(navigationController: UINavigationController, willShowViewController viewController: UIViewController, animated: Bool) {

    self.navigationController?.delegate = self        
    let index = (navigationController.viewControllers as NSArray).indexOfObject(viewController)
    self.pageControl?.currentPage = index

    let navBarSize = self.navigationController?.navigationBar.bounds.size        
    let origin = CGPointMake(((navBarSize?.width ?? 0)/2), ((navBarSize?.height ?? 0)/2) )
    self.pageControl = UIPageControl(frame: CGRectMake(origin.x, origin.y + 18, 0, 0))
    self.pageControl?.numberOfPages = 4
    self.pageControl?.currentPage = itemIndex
    self.pageControl?.currentPageIndicatorTintColor = UIColor.whiteColor()
    self.pageControl?.pageIndicatorTintColor = UIColor.grayColor()
    self.pageControl?.hidesForSinglePage = true
    self.navigationController?.navigationBar.addSubview(pageControl!)
 }

}

不幸的是,由于我的个人资料费率,我无法上传图片,但我的故事板由 TabBarController 组成,其中每个选项卡都嵌入了 NavigationController。 我试过给 pageControl 一个标签值,然后在导航委托方法中删除视图,但它不起作用。

有什么建议吗?

非常感谢

【问题讨论】:

  • 我知道这不是一个很好的解决方案,但我发现导航委托方法被调用了两次。目前我删除了 self.navigationController?.delegate = self 并使用 viewWillDisappear 中的 tag 属性来删除 PagaControl 视图

标签: ios swift uinavigationcontroller uipagecontrol


【解决方案1】:

尝试在您的viewWillAppear 中设置self.pageControl = nil

【讨论】:

  • 这不起作用。您不能将 nil 分配给页面控件。
猜你喜欢
  • 1970-01-01
  • 2021-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-23
  • 1970-01-01
  • 2018-10-15
相关资源
最近更新 更多