4

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

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

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

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

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

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

任何帮助表示赞赏。

4

2 回答 2

4

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

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

于 2013-02-13T17:47:11.647 回答
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
于 2013-02-13T18:17:40.300 回答