Tengo una navegación controlador de vista de que al momento de la acción envía un pase a una ficha vista de la barra de control. A causa de este proceder con las pestañas de la vista controlador hereda la barra de navegación. Estoy tratando de aplicar un título a uno de mi punto de vista de los controladores conectados a la ficha vista de la barra de controlador, pero al establecer el título a través de código no está funcionando para mí. ¿alguien sabe la razón por la que podría ser?

Aquí está una foto de mi guión:

Swift - Título que No Aparece para la Navegación de Controlador de Vista

El controlador de vista con el botón salir que es donde estoy tratando de poner el título en la barra de navegación (código):

import UIKit

class ProfileSettingsViewController: UIViewController {

    override func viewWillAppear(animated: Bool) {

        self.navigationItem.title = "Profile Settings"

    }

    override func viewDidLoad() {
        super.viewDidLoad()

        self.navigationItem.leftBarButtonItem = nil


    }



    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        //Dispose of any resources that can be recreated.
    }



    @IBAction func logoutButton(sender: AnyObject) {

        PFUser.logOut()
        var currentUser = PFUser.currentUser()
        self.performSegueWithIdentifier("userLoggedOut", sender: self)
        self.navigationController?.setNavigationBarHidden(self.navigationController?.navigationBarHidden == false, animated: true)

    }

}

Vista controlador incrustado en la navegación del controlador de disparo de la transición a la pestaña de la barra de controlador:

import UIKit
class UserRegistrationViewController: UIViewController {
func displayAlert(title:String, error:String) {
var alert = UIAlertController(title: title, message: error, preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "OK", style: .Default, handler: {
action in
}))
self.presentViewController(alert, animated: true, completion: nil)
}
@IBOutlet var usernameTextField: UITextField!
@IBOutlet var emailTextField: UITextField!
@IBOutlet var passwordTextField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
//Dispose of any resources that can be recreated.
    }
@IBAction func registerUser(sender: AnyObject) {
var error = ""
if usernameTextField.text == nil || emailTextField.text == nil || passwordTextField.text == nil {
error = "Please enter a username, email and password"
}
if error != "" {
displayAlert("Error In Form", error: error)
} else {
var user = PFUser.currentUser()
user.username = usernameTextField.text
user.password = passwordTextField.text
user.email = emailTextField.text
user.saveInBackgroundWithBlock {
(succeeded: Bool!, signupError: NSError!) -> Void in
if signupError == nil {
println(user.username)
println(user.password)
println(user.email)
self.performSegueWithIdentifier("successfulRegistration", sender: self)
self.navigationController?.setNavigationBarHidden(self.navigationController?.navigationBarHidden == false, animated: true)
//Hooray! Let them use the app now.
                } else {
if let errorString = signupError.userInfo?["error"] as? NSString {
error = errorString
} else {
error = "Please try again later."
}
self.displayAlert("Could Not Sign Up", error: error)
}
}
}
}
}

OriginalEl autor cphill | 2015-04-16

5 Comentarios

  1. 11

    Esto funcionó para mí: self.parent?.title = "nav bar title"

    OriginalEl autor Rehaan

  2. 14

    En su controlador de vista de la jerarquía, la barra de navegación está mostrando el título de UITabBarController, no de la vista de los controladores dentro de la UITabBarController.

    Forma más sencilla de obtener el título que se muestra en la barra de navegación sería

    override func viewWillAppear(animated: Bool) {
    self.tabBarController?.navigationItem.title = "Profile Settings"
    }
    Esta solución no parece ser la fijación de la cuestión. Mi barra de navegación no es realmente aparece. Podría ser debido al hecho de que estoy llamando self.navigationItem.leftBarButtonItem = nil en mi viewDidLoad?
    Lo siento desprecio el último comentario. Me había puesto el navigationController a false. Decir que yo tuve un no-navegación controlador de pasar a las pestañas de la barra de control. Tendría que establece este comando en el pase de acción de la no-navegación controlador?

    OriginalEl autor Jakub Vano

  3. 5

    Intente esto:

    self.navigationController?.navigationBar.topItem?.title = "Profile Settings"

    OriginalEl autor Hsm

  4. 4

    En la Pantalla de cierre de sesión viewcontroller agregar este –

    self.tabBarController?.navigationItem.title="Profile Settings"

    OriginalEl autor Uttam Sinha

  5. 3

    SWIFT 3

    Si incrustado en un UINavigationController, puede establecer el título de la siguiente manera, desde dentro de su ViewController del viewDidLoad() método.

    override func viewDidLoad() {
    super.viewDidLoad()
    /* If view controller is a direct child of UINavigationController */
    self.title = "Title Here"
    /* If view controller's parent is a direct child of UINavigationController e.g. a child of embedded tab view controller */
    self.parent?.title = "Title Here" 
    }

    OriginalEl autor AWebster

Dejar respuesta

Please enter your comment!
Please enter your name here