如何确定 iOS 上的设置何时更改
我使用 iPhone 的标准 root.plist
方法创建了一个自定义 Settings.app 捆绑包。我想知道是否有一种方法可以确定用户何时更改我的应用程序中的这些设置......
I have created a custom Settings.app bundle using the standard root.plist
approach for the iPhone. I'm wondering if there's a way to determine when the user changes those settings in my app...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
您可以通过以下方式侦听 NSUSerDefaultsDidChange-notifications:
每当 NSUserDefaults 更改时,都会调用
defaultsChanged
。当你想停止监听这些通知时,不要忘记调用
[[NSNotificationCenter defaultCenter] removeObserver:self];
(当对象被释放时,你也应该这样做)。 >You can listen for NSUSerDefaultsDidChange-notifications with this:
Whenever the NSUserDefaults changes,
defaultsChanged
will be called.Don't forget to call
[[NSNotificationCenter defaultCenter] removeObserver:self];
when you want to stop listening for these notifications (you should also do this when object gets deallocated).语法适用于 Swift 2。使用 Swift,您可以执行类似的操作来订阅 NSUserDefaults 的更改:
然后创建如下方法:
The syntax is for Swift 2. Using Swift you would do something like this to subscribe to changes for the NSUserDefaults :
Then create the method like this :
SWIFT 4
在viewController中注册观察者,
Selector实现
SWIFT 4
Register observer in viewController,
Selector implementation
注册以接收
NSUserDefaultsDidChangeNotification
通知。这并不明显,但是 iOS 应用程序编程指南 是这样描述的:Register to receive
NSUserDefaultsDidChangeNotification
notifications. It's not obvious, but the iOS Application Programming Guide describes it as such:使用键“instantWeb”访问应用程序特定的 Bool 类型设置的示例:
An example accessing an app specific Bool type setting with key "instantWeb":
监听设置的变化
,一旦该视图控制器不再位于内存中,请记住删除观察者。
Listen to change in settings
Remember to remove the observer, once this view controller is no longer in memory.
在 iOS10 中,尝试以下操作:
In iOS10, try this: