在代码中修改 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()

这样它就不会影响任何其他视图控制器