gpt4 book ai didi

ios - 当它取决于给定的领域设置时,如何将 'enter' 转换为特定的开关语句模式?

转载 作者:行者123 更新时间:2023-11-28 13:54:24 25 4
gpt4 key购买 nike

我正在我的应用程序中提供多种语言。我希望以某种方式实现,其中“语言设置-Btn”位于打开的 VC 上。默认语言为英语,但用户可以在从此按钮访问的 tableView 中更改为其他语言。

我目前的尝试(这可能不是最聪明的方法)是创建一个名为 Language 的 Realm 类,然后将按钮附加到 LanguageSettingTableView 中的所有单元格。当按下其中一个按钮(语言)时,用户将 Language.diaryLanguage 更改为按下的按钮代表的任何内容。

然后我在例如我的 welcomeScreenVC,我目前有四个不同的案例;英语、西类牙语、丹麦语、德语(仅供初学者使用)。

所以我想在 viewWillAppear 中设置一个 if 语句(我猜?),我在其中声明:if Language.diaryLanguage == "English"--> Present case .english, etc. 但我不能似乎找出如何达到这些不同的情况。

这是我在 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()
}

我希望有人能告诉我如何实现这一点。预先感谢!

最佳答案

虽然我分享 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") // .english

关于ios - 当它取决于给定的领域设置时,如何将 'enter' 转换为特定的开关语句模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54074143/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com