Restaurar a aparência padrão da barra de navegação

Estou criando um aplicativo iOS para iPhone e usando um controlador de navegação. Em algum momento da navegação, estou adicionando umUISegmentedControl para um controlador de exibição, logo abaixo da barra de navegação do controlador de navegação. Estou inserindo novas imagens de plano de fundo e sombra na barra de navegação, para fazer oUISegmentedControl aparecem como parte da barra de navegação. Eu faço assim:

    // 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

Quando eu me afasto desse determinado controlador de exibição, o fundo das barras de navegação ainda é alterado.

Como posso restaurar a aparência das barras de navegação?

Ou...

Existe outra maneira de incorporar oUISegmentedControl em uma barra de navegação expandida?

Imagem da barra de navegação com plano de fundo personalizado e controle segmentado abaixo:

Ao navegar de volta, a barra de navegação continua sendo personalizada:

EDITAR:

Em um controlador de exibição, antes de alterar as imagens de fundo, tento proteger a imagem padrão:

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
    }
}

Ambosherp ederp estãonil depois de definido, apesar da barra de navegação ficar visível neste momento. Por quê?

questionAnswers(2)

yourAnswerToTheQuestion