[修改结构模型后将数据传递回控制器

问题描述 投票:0回答:1

我有一系列View Controllers,它们将struct模型对象向下传递给链。

如果用户修改了模型上属性的值,我将更新视图控制器的模型实例,现在我需要通知父视图控制器该对象的值已更改。

以前,我会在模型对象上使用classes而不是structs,所以我不会遇到这个问题,因为该对象将被直接写入。

但是由于结构是按值传递的,因此我必须在其他视图控制器上更新状态。我一直在使用单例管理器对象通过调用updateModel()处理状态更改。有更好的方法吗?

swift model-view-controller struct
1个回答
0
投票

我使用了与此类似的东西;保留对相邻视图控制器的引用(注意避免引用循环),并在struct属性上使用属性观察器进行更改,以在其发生更改时进行更新。

也可以根据您的需要在提供新的视图控制器之前或在设置之前进行更新。

class myViewController: UIViewController {

    // Your struct
    var model: MyStruct? {
        didSet {
            if let pvc = previousVC {
                pvc.model = model
            }
        }
    }

    // Keep a reference to the previous view controller on your stack
    var previousVC: UIViewController?

    override viewDidLoad() {
        super.viewDidLoad()

        self.model = MyStruct()
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.