Как я могу включить / отключить свой модальный параметр при изменении значения строки моей строки switch?

#ios #swift #eureka-forms

#iOS #swift #eureka-forms

Вопрос:

Я хочу активировать / деактивировать свой модальный параметр в зависимости от текущего значения моей строки переключения.

У меня есть SettingsViewController, где пользователь может включить или отключить его:

 class SettingsFormViewController : FormViewController, MFMailComposeViewControllerDelegate {
    override func viewDidLoad() {
        super.viewDidLoad()
        
        form 
                Section("Messages")
            <<< SwitchRow("message_users") { row in
                row.title = "Activate messages"
            }.onChange { row in
                row.title = (row.value ?? false) ? "Deactivate messages" : "Activate messages"
                row.updateCell()
            }
            
  

Теперь в моем ReloadManager я хочу проверить, включена ли строка или нет. Если он включен, должен отображаться модальный параметр, а если нет, то не должен:

 
class ReloadManager {

...

private func showModalFromSettings() {

             let nav = UINavigationController()
             let ctrl = MessageFormViewController()
                 
             ctrl.preferredContentSize = CGSize(width: 600, height: 400)
             nav.pushViewController(ctrl, animated: true)
             nav.modalPresentationStyle = .popover
               
             UIApplication.shared.keyWindow?.rootViewController!.present(nav, animated: true, completion: nil)
             nav.popoverPresentationController?.sourceView = UIApplication.shared.keyWindow?.rootViewController?.view
             
    }
}
  

Каков наилучший подход для проверки того, включена строка или нет, а затем передачи значения в мой ReloadManager?
Заранее спасибо!

Ответ №1:

Вы можете использовать UserDefaults для сохранения статуса строки.

      Section("Messages")
                <<< SwitchRow("message_users") { row in
                    row.title = "Activate messages"
                }.onChange { row in
                    row.title = (row.value ?? false) ? "Deactivate messages" : "Activate 
messages"
                    row.updateCell()
                    UserDefaults.standard.set(row.value ?? false, forKey: "RowStatus")
                }

private func showModalFromSettings() {
             let rowStatus = UserDefaults.standard.bool(forKey: "RowStatus")
             if rowStatus {
                  //Do something when row enabled
             } else {
                 //Do something when row disabled
             }
             let nav = UINavigationController()
             let ctrl = MessageFormViewController()
                 
             ctrl.preferredContentSize = CGSize(width: 600, height: 400)
             nav.pushViewController(ctrl, animated: true)
             nav.modalPresentationStyle = .popover
               
             UIApplication.shared.keyWindow?.rootViewController!.present(nav, animated: true, completion: nil)
             nav.popoverPresentationController?.sourceView = UIApplication.shared.keyWindow?.rootViewController?.view
             
    }
}