有几种方法可以完成此操作。
您可以定义一个从您提交的视图控制器退回到更远的另一个视图控制器(通常是执行原始演示文稿的VC)后退出segue。展开的顺序可以从按钮触发,就像“常规”顺序一样,并且由于它们是顺序的,它们会触发解除VC中的-prepareForSegue:
。您可以像使用它那样将数据推回。放松时间记录在this tech note中。
或者,您可以从所呈现的视图控制器到另一个VC建立代表团。这个图案被广泛用于在IOS发展,涉及几个步骤:
- 定义的类,以符合协议(“SettingsDelegate”)。给它一个方法 - 像
settingsDidChange(_:)
。使该方法对您想要传回的数据进行参数化。
- 给你的设置控制器弱
delegate
SettingsDelegate?
类型的财产。首次展示VC时,请将代表设置为演示者。
- 使呈现的VC符合委托协议,并按照您认为合适的方式实施更新方法。
- 在提示的VC调用
self.delegate.settingsDidChange(_:)
中有Done按钮,传递新数据。呈现的VC将获得此调用,并在Settings关闭时进行更新。
委派模式可能会第一次难以设置,但随着您的进行变得更加容易。它记录在here。
最后,你可以使用一个持久性数据存储在藏匿设置UserDefaults是设置数据一个不错的选择 - 它可以让你保持信息的键/值对的方式,就是在你的应用程序访问。阅读用户默认设置here。
要在用户默认值更改时进行更新,您可以让您的设置控制器在解散时发布通知。然后,您应用中的其他VC可以侦听此通知并根据需要进行更新。
来源
2017-02-26 01:30:09
Tim
非常感谢您的回答!你认为哪种方法更简单? – Gabe12
对于设置视图,我建议UserDefaults。它专门为支持用户可以自定义的设置而构建,并且相对容易开始使用(并且非常可靠)。 – Tim
我可以在viewDidLoad中收到通知,但每次关闭设置控制器时视图都不会自动加载。我怎样才能在接收它的视图中不断更新此通知? – Gabe12