【发布时间】:2019-03-11 20:32:55
【问题描述】:
我正在这样设置导航栏标题:
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 方法中设置的(不知道前两行的格式发生了什么!):
导入 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")
}
}
}
【问题讨论】:
-
向我们展示您选择的语言变量以及您在哪里设置它
-
在设置变量之前放置断点可能有助于调试此问题。很可能您没有正确设置变量。
-
什么是 loadInitialValues?
-
@El Tomato 它加载从一开始就被编程的英语和外语单词,而不是由用户添加。
标签: ios swift variables navigationbar titlebar