当我的开关行的行值发生变化时,如何启用/禁用我的模式?
Posted
技术标签:
【中文标题】当我的开关行的行值发生变化时,如何启用/禁用我的模式?【英文标题】:How can I enable/disable my modal when the row value of my switch row changes? 【发布时间】:2020-08-31 07:05:38 【问题描述】:我想根据我的开关行的当前值激活/停用我的模式。
我有一个 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
【讨论】:
以上是关于当我的开关行的行值发生变化时,如何启用/禁用我的模式?的主要内容,如果未能解决你的问题,请参考以下文章
为啥调用 location.reload(); 后我的表中的行顺序会发生变化?关闭模态框时