首页 > 解决方案 > 如何在 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 之间来回跳转时如何获取布尔值呢?

标签: iosswift

解决方案


也许您可以通过在 Bool 上设置 didSet 调用来修复它。

var showPastOrders: Bool {
   didSet {
       orderList = UserDefaults.standard.bool(forKey: "showPastOrders")
       // view.layoutIfNeeded()
   }
}

现在,如果设置 showPastOrders 设置不正确,我会建议委托或使用 segue 传递数据,具体取决于您如何设置项目。

希望能帮助到你。


推荐阅读