我有一个带有UILabel
的ViewController A和一个带有button
的ViewController B,所以我想在按下按钮后更新标签。我可以为此使用委托,但是我的ViewControllers没有连接,并且我不能使用诸如setDelegate之类的东西,我不会在另一个实例中创建任何实例。因此,基本上它们是在其他地方创建的。有什么办法吗?
Variant 1:如果ControllerA和ControllerB的生存时间不同
使用NSUserDefaults
。在ControllerB按钮上,单击将数据存储到NSUserDefaults中,在ControllerA中,从NSUserDefaults中读取数据并显示在标签中(也可以观察到NSUserDefaults,因此可以跟踪运行时的更改)
变量2:如果ControllerA和ControllerB当前都在运行时
使用NSNotificationCenter
。在ControllerB按钮上,单击发布带有UserInfo中数据的NSNotification,然后通知处理程序中的ControllerA从userInfo中提取数据并分配给标签。
使用协调器模式。
将创建/获取两个VC的2个实例的类,并与代表将在他们之间移动数据。协调器模式的优点在于,您的VC可以在其他地方(相同或其他项目)中重复使用,并且代码更简洁。