ios - 如何在 UINavigationController 内的 UIViewController 中重新加载数据
问题描述
我在 NavigationController 中有 2 个子 ViewContollers。第二个中有一个 UISwitch,它改变了我在第一个中查询后端 API 的方式。
这是我在第二个中的代码:
@IBAction func ordersTapped(_ sender: UISwitch) {
if sender.isOn {
UserDefaults.standard.set(true, forKey: "showPastOrders")
} else {
UserDefaults.standard.set(false, forKey: "showPastOrders")
}
}
这是我在第一个代码中的代码:
override func viewDidLoad() {
super.viewDidLoad()
let orderList = UserDefaults.standard.bool(forKey: "showPastOrders")
loadOrderData(past: orderList)
}
问题是,每当我在 ViewControllers 之间来回交换时,我设置的 Userdefaults 布尔值都不会被读取。我尝试覆盖 viewDidAppear 以获取该值,但这也无济于事。
那么每次在 VC 之间来回跳转时如何获取布尔值呢?
解决方案
也许您可以通过在 Bool 上设置 didSet 调用来修复它。
var showPastOrders: Bool {
didSet {
orderList = UserDefaults.standard.bool(forKey: "showPastOrders")
// view.layoutIfNeeded()
}
}
现在,如果设置 showPastOrders 设置不正确,我会建议委托或使用 segue 传递数据,具体取决于您如何设置项目。
希望能帮助到你。
推荐阅读
- javascript - 在chrome中如何计算{a:{b:2}}+10?
- reactjs - 从酶中的 React Element 子项获取文本值
- excel - 在 JS API 中的 Excel 中查找可用范围
- c++ - 保护类内存阵列检测分段错误
- php - 注册电子邮件发送给新用户的时间过长
- c++ - C++ 处理时间
- java - JavaFX 可以启用隐藏滚动条的滚动吗?
- amazon-web-services - 在 aws cloudformation 期间找不到资源的属性 publicip
- mysql - Mysql查询(选择列值)中的字段不起作用
- javascript - 如何在laravel框架中调整数组中的图像大小?