iOS开发 - 视图如何动态反映应用内设置

时间:2013-02-13 17:40:40

标签: iphone ios objective-c xcode cocoa-touch

我是ios开发的新手,并制作了一个简单的应用程序。

它包含一个根视图控制器(一个表视图由一个单元格列表组成,单击单元格指向内容视图),另一个应用内设置视图控制器包含几个简单的UI控件,如开关,滑块以保存应用程序相关设置。用户更改内容后,应用程序只需写入文件以保持持久性。

我的问题是,如何让其他视图控制器反映设置的变化?

我的想法是当app加载时,我将所有设置初始化为字典并将其保存在内存中。当更改发生时,除了写入文件之外,我还会更新该字典。每次我的内容视图显示我都要求它始终加载该设置字典。

例如,如果用户在设置视图中更改字体大小,我希望内容视图控制器得到通知,并在下次向用户显示时立即更改字体大小。

我不知道我是否应该制作自定义委托/数据源。

任何帮助表示感谢。

2 个答案:

答案 0 :(得分:4)

您应该使用NSUserDefaults来存储和检索应用设置。这正是它所做的,它将自动将设置保存到磁盘并稍后为您检索。

对于更改设置时更新应用的其他部分,您有许多选项。在iOS上,一种相当简单的方法是在需要了解设置更改并对其做出反应的任何视图控制器中注册NSUserDefaultsDidChangeNotification。然后,当收到该通知时,请更新以反映新设置。

答案 1 :(得分:1)

听起来你正试图在另一个ViewController中发生变化时向各种ViewControllers发送通知。您有两种选择:

  1. 多个ViewControllers :您可以使用NSNotificationCenter发布通知,并且将通知正在观察该特定通知的任何ViewController。更多信息:https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Notifications/Introduction/introNotifications.html#//apple_ref/doc/uid/10000043i
  2. 单个ViewController :如果只需要通知单个ViewController,则使用委托通知ViewController。更多信息:https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CocoaFundamentals/CommunicatingWithObjects/CommunicateWithObjects.html