#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
}
}