Swift-更新多个viewControllers

时间:2018-07-10 16:31:38

标签: swift swift3 nsnotificationcenter

我想同时更新多个视图。

在我的应用中,您可以更改名称。当用户更改名称时,想更新4 ViewControllers,以显示新名称。 我曾经使用delegates更新一个ViewController,但是鉴于我想更新多个,所以我认为不可能。 (也许我错了吗?)

我听说过NotificationCenter,但是我不知道这是否是实现此目标的最佳方法。 像这样:

NotificationCenter.default.addObserver(self, selector: #selector(self.reload(_:)), name: NSNotification.Name(rawValue: "uploaded"), object: nil)

这样做好吗?

您怎么看?你会怎么做?

1 个答案:

答案 0 :(得分:0)

您有很多方法可以做到这一点,这取决于项目的结构。

如果所有视图都在同一个ViewController中,则可以只听一些委托并手动更新所有视图,例如self.view1.updateName(newName)self.view2.updateName(newName)

否则,如果您有很多ViewControllers,则可以执行类似Singleton的操作,并在viewWillAppear时获得名称,(我更喜欢不使用Singleton

示例

class MyInfo{
    public static let shared = MyInfo();

    private(set) var name:String?

    private init(){}

    func update(name:String){
        self.name = name;
    }
}

在您的viewWillAppear上,您可以执行以下操作

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated);
    self.label.text = MyInfo.shared.name;
}

我非常喜欢ReSwift的通量模式,但对于您遇到的小问题,我认为它可能非常复杂。

希望对您有帮助