У меня есть контроллер вида навигации, который после действия отправляет segue в контроллер отображения панели вкладок. Из-за этого segue контроллер с вкладками отображает навигационную панель. Я пытаюсь применить заголовок к одному из моих контроллеров представления, прикрепленному к контроллеру просмотра панели вкладок, но установка заголовка через код не работает для меня. кто-нибудь знает причину, почему это может быть?Swift - Заголовок не отображается для контроллера вида навигации
Вот фотография моего раскадровки:
Контроллер вид с помощью кнопки выхода из системы, где я пытаюсь установить заголовок в панели навигации (код):
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)
}
}
Контроллер, встроенный в навигационный контроллер, запускающий переход к контроллеру панели вкладок:
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)
}
}
}
}
}
Это решение не кажется, фиксируя проблему. Моя панель навигации на самом деле не появляется. Может быть, это связано с тем, что я называю 'self.navigationItem.leftBarButtonItem = nil' в моем' viewDidLoad'? – cphill
Извините, проигнорируйте последний комментарий. Я установил для navigationController значение false. Скажем, у меня был контроллер без навигации для контроллера панели с вкладками. Я установил бы эту команду в действие segue с неавигационного контроллера? – cphill