Я использую AKSideMenu для создания бокового меню.Я настраиваю некоторые пользовательские настройки, чтобы позволить пользователю настраивать меню.У меня есть пункты настройки, настроенные на настройках VC с переключателем UIS для каждого элемента.Я обнаружил, что при включении / выключении элемента новый параметр не реализуется, пока не будет перезапущен rootViewController.Чтобы попытаться это исправить, у меня есть функция, которая представляет предупреждение.Предупреждение содержит код для повторного создания корневого контроллера.
Проблема, с которой я столкнулся на первых порах, заключалась в том, что «contentViewController» для бокового меню был жестко запрограммирован, поэтому при запуске кода предупреждения вместо просмотра VC предпочтений показывался contentViewController / Home VC.Чтобы исправить эту проблему, я создал переменную «thecCntentViewController» для хранения идентификатора «contentViewController».Для тех, кто не знаком с AKSideMenu, VKS с идентификатором StoryBoard «contentViewController» будет использоваться в качестве домашнего VC для AKSideMenu.Я установил для cCntentViewController значение «Preferences_VC», и теперь при настройке UIS-переключателя на экране остается VC «Preferences VC».
У меня все работает, кроме одного глюка.Панель навигации исчезает при запуске кода предупреждения.Preferences VC встроен в NavigationColtroller.Может кто-нибудь сказать мне, что нужно изменить, чтобы предотвратить исчезновение навигационной панели?
@IBAction func scaleContectSwitchTapped(_ sender: UISwitch)
{
if sender.isOn == true
{
do
{
if try Database.shared.databaseConnection!.run(theTable.update (scaleContent <- "true")) > 0
{
scaleTheContent = true
presentAlert()
} else {
print("scaleContent not found")
}
} catch let error as NSError {
print("Update failed! Error:\(error.description)")
}
} else {
do
{
if try Database.shared.databaseConnection!.run(theTable.update(scaleContent <- "false")) > 0
{
scaleTheContent = false
presentAlert()
} else {
print("scaleContent not found")
}
} catch let error as NSError {
print("Update failed! Error:\(error.description)")
}
}
}
func presentAlert()
{
let alert = UIAlertController(title: "Configure the Side Menu",
message: "The Side Menu needs to be reloaded after modifying key preferences.",
preferredStyle: .alert)
let confirmButton = UIAlertAction(title: "OK", style: .default) { (_) in
thecCntentViewController = "Preferences_VC"
let sideMenuController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "rootController")
UIApplication.shared.keyWindow?.rootViewController = sideMenuController
}
alert.addAction(confirmButton)
present(alert, animated: true, completion: nil)
}
if let storyboard = self.storyboard {
// This is the code in the rootViwController
self.contentViewController = storyboard.instantiateViewController(withIdentifier: thecCntentViewController)
self.leftMenuViewController = storyboard.instantiateViewController(withIdentifier: "leftMenuViewController")
self.rightMenuViewController = storyboard.instantiateViewController(withIdentifier: "rightMenuViewController")
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
// navigationController?.setNavigationBarHidden(false, animated: false)
navigationController?.navigationBar.isHidden = false
}