恢复默认的导航栏外观

我正在为iPhone制作一个iOS应用程序,并使用导航控制器。 在导航期间的某个时刻,我将一个UISegmentedControl添加到视图控制器,就在导航控制器的导航栏下方。 我在导航栏中插入新的背景和阴影图像,使UISegmentedControl显示为导航栏的一部分。 我这样做:

  // nav bar color image let rect = CGRectMake(0, 0, view.frame.width, 0.5) // Used in navBar, size dosn't matter UIGraphicsBeginImageContextWithOptions(rect.size, true, 0) barBackgroundColor.setFill() UIRectFill(rect) let navBarBackground = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() // setup navbar navigationController!.navigationBar.setBackgroundImage(navBarBackground, forBarMetrics: .Default) navigationController!.navigationBar.shadowImage = UIImage() navigationController!.navigationBar.tintColor = UIColor.blackColor() navigationController!.navigationBar.translucent = false 

当我离开给定的视图控制器,导航栏背景仍然改变。

我怎样才能恢复导航栏的外观?

要么…

有没有另一种方式embeddedUISegmentedControl扩展导航栏?

具有自定义背景和分段控制的导航栏的图像如下: 导航与自定义背景。加上下面的段控制

当导航回来时,导航栏cuntinues是定制的: 在这里输入图像说明

编辑:

在我更改背景图像之前的视图控制器中,我尝试安全的标准图像:

 override func viewDidAppear(animated: Bool) { if sharedVariables.standartNavBarBackgroundImage == nil { let herp = navigationController!.navigationBar.backgroundImageForBarMetrics(.Default) sharedVariables.standartNavBarBackgroundImage = herp let derp = navigationController!.navigationBar.shadowImage sharedVariables.standartNavBarShadowImage = derp } } 

在设置之后, herpderp都是nil ,尽pipe导航栏在这个妈妈身上可见。 怎么来的?

只需将背景图像和阴影图像设置nil就可以获得默认外观。