在代码中修改NavigationBar会修改storyboard中的多个NavigationBar

时间:2015-09-15 12:24:34

标签: ios swift uinavigationcontroller

我有一个包含3个不同NavigationControllers的故事板:

aren't officially documented in the SDK docs

在我的第一个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 个答案:

答案 0 :(得分:1)

viewWillAppear中添加页面控件

self.addPageControlToNavigationBar()

viewWillDisappear中删除页面控件,

pageControl.removeFromSuperview()

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