我想同时更新多个视图。
在我的应用中,您可以更改名称。当用户更改名称时,想更新4 ViewControllers
,以显示新名称。
我曾经使用delegates
更新一个ViewController
,但是鉴于我想更新多个,所以我认为不可能。 (也许我错了吗?)
我听说过NotificationCenter
,但是我不知道这是否是实现此目标的最佳方法。
像这样:
NotificationCenter.default.addObserver(self, selector: #selector(self.reload(_:)), name: NSNotification.Name(rawValue: "uploaded"), object: nil)
这样做好吗?
您怎么看?你会怎么做?
答案 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的通量模式,但对于您遇到的小问题,我认为它可能非常复杂。
希望对您有帮助