在代码中修改 NavigationBar 会修改 storyboard 中的多个 NavigationBar
Modifying NavigationBar in code modifies multiple NavigationBars in storyboard
我有一个包含 3 个不同 NavigationController 的故事板:
在第一个 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.
为什么会这样?
在viewWillAppear
中添加页面控件即可,
self.addPageControlToNavigationBar()
在viewWillDisappear
中去掉页面控件即可,
pageControl.removeFromSuperview()
这样它就不会影响任何其他视图控制器
我有一个包含 3 个不同 NavigationController 的故事板:
在第一个 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.
为什么会这样?
在viewWillAppear
中添加页面控件即可,
self.addPageControlToNavigationBar()
在viewWillDisappear
中去掉页面控件即可,
pageControl.removeFromSuperview()
这样它就不会影响任何其他视图控制器