在代码中修改导航栏会修改情节提要中的多个导航栏
Posted
技术标签:
【中文标题】在代码中修改导航栏会修改情节提要中的多个导航栏【英文标题】:Modifying NavigationBar in code modifies multiple NavigationBars in storyboard 【发布时间】:2015-09-15 12:24:33 【问题描述】:我有一个包含 3 个不同 NavigationControllers 的故事板:
在我的第一个 NavigationController 的根控制器中,我在代码中添加了一个 PageControl:
func addPageControlToNavigationBar()
let navBarsize = navigationController!.navigationBar.bounds.size
let origin = CGPointMake(navBarsize.width/2, navBarsize.height/2)
navigationController?.delegate = self
pageControl = UIPageControl(frame: CGRectMake(navBarsize.width/2, navBarsize.height/2, 0, 0))
pageControl.numberOfPages = 2
pageControl.currentPage = 0
pageControl.pageIndicatorTintColor = UIColor.lightGrayColor()
pageControl.currentPageIndicatorTintColor = UIColor.blackColor()
let testView = UIView(frame: CGRectMake(origin.x, origin.y, 20, 20))
testView.backgroundColor = UIColor.yellowColor()
navigationController?.navigationBar.addSubview(pageControl)
当我对第二个 NavigationController 执行 segue 时,PageController 也在那里。我只希望它出现在第一个 ViewController 中。
为什么会这样?
【问题讨论】:
【参考方案1】:在viewWillAppear
只需添加页面控件,
self.addPageControlToNavigationBar()
在viewWillDisappear
中只需去掉页面控件,
pageControl.removeFromSuperview()
这样它不会影响任何其他视图控制器
【讨论】:
以上是关于在代码中修改导航栏会修改情节提要中的多个导航栏的主要内容,如果未能解决你的问题,请参考以下文章
iOS:不同情节提要中的 presentViewController 未显示导航栏