Я использую модуль InAppSettingsKit в своем приложении для iOS, разработанном без раскадровки. У меня есть MainTabBarController, где я инициализирую свои ViewControllers. Все работает нормально, НО когда я запускаю приложение в симуляторе (где язык телефона английский) или на моем физическом устройстве (где язык телефона немецкий), у меня возникают проблемы в обоих случаях. Приложение запускается, отображается первый VC. Когда я нажимаю на последний элемент TabBarItem под названием Einstellungen, он автоматически переименовывается в «Настройки». Также мой заголовок NavigationBar изменен с Einstellungen на Settings. Я пробовал несколько вещей, но я не понимаю, в чем проблема. Есть ли какая-то константа, которую я должен изменить внутри InAppSettingsKit, чтобы мой VC не переименовывался?
Спасибо за любую помощь!
import UIKit
import FirebaseAuth
class MainTabBarController: UITabBarController, UITabBarControllerDelegate {
//MARK: - View Life Cycle
override func viewDidLoad() {
super.viewDidLoad()
delegate = self
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
setupViews()
}
//MARK: - Functions
private func setupViews() {
guard let user = Auth.auth().currentUser else { return }
//First ViewController
let firstVC = UINavigationController(rootViewController: VicinityViewController(currentUser: user))
firstVC.navigationBar.tintColor = .mainBlue
firstVC.navigationBar.prefersLargeTitles = true
firstVC.navigationBar.titleTextAttributes = [.foregroundColor: UIColor.mainBlue]
firstVC.navigationBar.largeTitleTextAttributes = firstVC.navigationBar.titleTextAttributes
let firstVCItem = UITabBarItem(title: "Beispiel1", image: UIImage(systemName: "circle.grid.hex"), selectedImage: UIImage(systemName: "circle.grid.hex.fill"))
firstVC.tabBarItem = firstVCItem
//Second ViewController
let secondVC = ChatsViewController()
let secondVCItem = UITabBarItem(title: "Beispiel2", image: UIImage(systemName: "camera"), selectedImage: UIImage(systemName: "camera.fill"))
secondVC.tabBarItem = secondVCItem
//Third ViewController
let thirdVC = UINavigationController(rootViewController: SettingsViewController())
thirdVC.navigationBar.prefersLargeTitles = true
let thirdVCItem = UITabBarItem(title: "Einstellungen", image: UIImage(systemName: "gear"), selectedImage: UIImage(systemName: "gear.fill"))
thirdVC.tabBarItem = thirdVCItem
//Array of the controllers, displayed by the TabBarController
let controllers = [firstVC, secondVC, thirdVC]
self.viewControllers = controllers
}
//MARK: - Delegate
func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
print("Should select ViewController: \(viewController.title ?? "")?")
return true;
}
}
Мои настройкиViewController:
import UIKit
import InAppSettingsKit
import FirebaseAuth
enum SpecifierKeys: String {
case logout = "logout_preference"
}
class SettingsViewController: IASKAppSettingsViewController {
//MARK: - View Life Cycle
override func viewDidLoad() {
super.viewDidLoad()
setupViews()
updateHiddenKeys()
delegate = self
NotificationCenter.default.addObserver(self, selector: #selector(settingDidChange(notification:)), name: Notification.Name.IASKSettingChanged, object: nil)
}
//MARK: - Functions
private func setupViews() {
self.navigationItem.rightBarButtonItem = nil
}
@objc func settingDidChange(notification: Notification?) {
updateHiddenKeys()
}
func updateHiddenKeys() {
print(UserDefaults.standard.object(forKey: "name_preference") ?? "There is no value")
}
}
extension SettingsViewController: IASKSettingsDelegate {
func settingsViewControllerDidEnd(_ settingsViewController: IASKAppSettingsViewController) {
print("SettingsViewController did end")
}
func settingsViewController(_ settingsViewController: IASKAppSettingsViewController, buttonTappedFor specifier: IASKSpecifier) {
guard let _ = specifier.key else { return }
let Specifier: SpecifierKeys = specifier.key.map { SpecifierKeys(rawValue: $0) }!!
switch Specifier {
case .logout:
print("Ausloggen gedrückt")
Utilities.logout()
}
}
}