Como girar a orientação programaticamente no Swift?

Eu tentei o seguinte:

UIDevice.currentDevice().setValue(UIInterfaceOrientation.Portrait.rawValue, forKey: "orientation")

em

viewWillAppear

mas não funciona. Como rotacionar minha tela no viewWillAppear?

ATUALIZAR

Eu uso o próximo código para bloquear uma orientação:

var shouldRotate = true
func application(application: UIApplication, supportedInterfaceOrientationsForWindow window: UIWindow?) -> Int {
    if shouldRotate == true {
        return Int(UIInterfaceOrientationMask.Portrait.rawValue)
    } else {
        return Int(UIInterfaceOrientationMask.LandscapeLeft.rawValue)
    }
}

Swift 4.0

  private func application(application: UIApplication, supportedInterfaceOrientationsForWindow window: UIWindow?) -> Int {
        if shouldRotate == true {
            return Int(UIInterfaceOrientationMask.portrait.rawValue)
        } else {
            return Int(UIInterfaceOrientationMask.landscapeLeft.rawValue)
        }
    }

e no meu primeiro controlador no viewWillAppear eu defino:

if let appDelegate = UIApplication.sharedApplication().delegate as? AppDelegate {
    appDelegate.shouldRotate = true
}

no meu segundo controlador:

if let appDelegate = UIApplication.sharedApplication().delegate as? AppDelegate {
    appDelegate.shouldRotate = false
}

então, quando eu volto do segundo controlador para o PRIMEIRO:

Eu giro para a esquerda - não gira, giro de volta para a direita - nada, giro para a esquerda, novamente - ele gira.

Como posso corrigir isso?

questionAnswers(4)

yourAnswerToTheQuestion