我在我的应用程序中提供了几种语言。我希望在这种情况下,‘语言设置-Btn’是在打开的VC。默认的语言将是英语,但用户可以更改为其他语言的tableView通过这个按钮访问。
我目前的尝试(这可能不是最聪明的方法)是创建一个名为Language的领域类,然后将按钮附加到LanguageSettingTableView中的所有单元格。当按下其中一个按钮(语言)时,用户将Language.diaryLanguage更改为所按下的按钮所表示的任何值。
然后我在我的welcomeScreenVC中设置了一个切换语句,目前我有四种不同的情况:英语,西班牙语,丹麦语,德语(只是作为开始)。
所以我想设置一个if语句(我猜?)inside viewWillAppear,其中我声明: if Language.diaryLanguage ==“viewWillAppear”--> Present case .english等,但我似乎找不到如何到达这些不同的案例。
下面是我在welcomeScreenVC中的相关代码:
import UIKit
import RealmSwift
enum LanguageMode {
case english
case spanish
case danish
case german
}
class WelcomeScreen: UIViewController {
var getStartedBtn = UIButton ()
var informationBtn = UIButton ()
var seeAllDiariesBtn = UIButton ()
var languageSettingsBtn = UIButton ()
var currentLanguage = Language()
var mode: LanguageMode = .english
private func modeUpdate() {
switch mode {
case .english:
getStartedBtn.setTitle("Create new People Diary", for: .normal)
informationBtn.setTitle("Read More", for: .normal)
seeAllDiariesBtn.setTitle("See all People Diaries", for: .normal)
languageSettingsBtn.setTitle("Language", for: .normal)
case .danish:
getStartedBtn.setTitle("Lav ny People Diary", for: .normal)
informationBtn.setTitle("Læs Mere", for: .normal)
seeAllDiariesBtn.setTitle("Se alle People Diaries", for: .normal)
languageSettingsBtn.setTitle("Sprog", for: .normal)
case .spanish:
getStartedBtn.setTitle("Hace nuevo People Diary", for: .normal)
informationBtn.setTitle("Lees Mas", for: .normal)
seeAllDiariesBtn.setTitle("Mirra todos People Diaries", for: .normal)
languageSettingsBtn.setTitle("Idiomas", for: .normal)
case .german:
getStartedBtn.setTitle("Bla bla Bla", for: .normal)
informationBtn.setTitle("Bla bla bla", for: .normal)
seeAllDiariesBtn.setTitle("Bla bla", for: .normal)
languageSettingsBtn.setTitle("Bla bla", for: .normal)
}
}
override func viewWillAppear(_ animated: Bool) {
self.navigationController?.setNavigationBarHidden(true, animated: animated)
super.viewWillAppear(animated)
if currentLanguage.diaryLanguage == "English" {
// Then present case .english ...
} else if currentLanguage.diaryLanguage == "Danish" {
// Present case .danish ...
} else if currentLanguage.diaryLanguage == "Spanish" {
// Present case .spanish ...
} else if currentLanguage.diaryLanguage == "German" {
// Present case .german ...
} else {
// present .english (pr. default)
}
modeUpdate()
}我希望有人能告诉我如何做到这一点。首先谢谢你!
发布于 2019-01-08 04:32:03
虽然我同意iOSer的建议,即localisation将是实现您所描述的功能(see this guide for a good starting point)的更好的解决方案,但要回答您关于如何使用switch语句的特定问题,您只需将变量更新为与您想要执行的情况相关联的值。
enum Language {
case english, french, german
}
var language: Language = .english
func generateGreeting() -> String {
switch language {
case .english:
return "Hello!"
case .french:
return "Bonjour!"
case .german:
return "Guten Tag!"
}
}
generateGreeting() // 'Hello!'
language = .french
generateGreeting() // 'Bonjour!'
language = .german
generateGreeting() // 'Guten Tag!'在您的enum表示特定类型的值的情况下,例如在关联了String的示例中,您可以将其用作每个案例的值。
enum Language: String {
case english = "English"
case french = "French"
case german = "German"
}
Language(rawValue: "English") // .englishhttps://stackoverflow.com/questions/54074143
复制相似问题