Я устанавливаю заголовок панели навигации следующим образом:
override func viewDidLoad() {
super.viewDidLoad()
languageMenu()
let titleAttributes = [NSAttributedString.Key.font: UIFont(name: "AmericanTypewriter", size: 22)!]
navigationController?.navigationBar.titleTextAttributes = titleAttributes
title = "POLYGLOT"
navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(addNewWord))
}
Что отлично работает со строковыми литералами, т. Е. "POLYGLOT".
Я хочу использовать строковую переменную с именем selectedLanguage, которая меняет значение в зависимости от того, какой язык пользователь выбирает при запуске в качестве значения для заголовка.
Когда я пытаюсь это сделать, в области заголовка навигационной панели ничего не отображается. Я не видел примеров этого в моем поиске в Интернете.
Переменная selectedLanguage устанавливается в методе languageMenu следующим образом (не знаю, что случилось с форматированием первых 2 строк!):
import UIKit
класс ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var languageButton: UIButton!
@IBOutlet weak var tableView: UITableView!
var words = [String]()
var chosenLanguage = String()
var languageSaved = String()
var toolbar = UIToolbar()
override func viewDidLoad() {
super.viewDidLoad()
languageMenu()
let titleAttributes = [NSAttributedString.Key.font: UIFont(name: "AmericanTypewriter", size: 22)!]
navigationController?.navigationBar.titleTextAttributes = titleAttributes
title = chosenLanguage
navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(addNewWord))
}
@objc func languageMenu(){
let chooseLanguage = UIAlertController(title: "Vocabulary Tutor", message: "Choose a Language", preferredStyle: .actionSheet)
let germanButton = UIAlertAction(title: "German", style: .default, handler: { (action) -> Void in
self.chosenLanguage = "german"
print("Choosen language is: \(self.chosenLanguage)")
self.loadInitialValues()
})
let frenchButton = UIAlertAction(title: "French", style: .default, handler: { (action) -> Void in
self.chosenLanguage = "french"
print("Choosen language is: \(self.chosenLanguage)")
self.loadInitialValues()
})
chooseLanguage.addAction(germanButton)
chooseLanguage.addAction(frenchButton)
self.navigationController!.present(chooseLanguage, animated: true, completion: nil)
if let defaults = UserDefaults(suiteName: "group.co.uk.tirnaelectronics.polyglot") {
if chosenLanguage == "german" {
defaults.set(chosenLanguage, forKey: "languageChosen")
} else {
defaults.set(chosenLanguage, forKey: "languageChosen")
}
}
}