如何从导航栏中删除 UIPageControl?
Posted
技术标签:
【中文标题】如何从导航栏中删除 UIPageControl?【英文标题】:How to remove UIPageControl from navigationBar? 【发布时间】: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 视图 【参考方案1】:尝试在您的viewWillAppear
中设置self.pageControl = nil
【讨论】:
这不起作用。您不能将 nil 分配给页面控件。以上是关于如何从导航栏中删除 UIPageControl?的主要内容,如果未能解决你的问题,请参考以下文章