我可以隐藏/禁用 Settings.bundle 中的字段吗?

Posted

技术标签:

【中文标题】我可以隐藏/禁用 Settings.bundle 中的字段吗?【英文标题】:Can I Hide/Disable fields in Settings.bundle? 【发布时间】:2012-01-08 23:49:12 【问题描述】:

我的 Settings.bundle 的 Root.plist 中有几个文本字段项。我的应用程序需要所有这些,但我希望其中一个被用户隐藏或不可编辑。例如。当用户在他的 iPhone 上转到 Settings--> MyApp 时,我希望其中一个字段在那里不可见,或者禁用编辑。这可能吗?

【问题讨论】:

【参考方案1】:

简短的回答,你不能。长答案:我认为您在应用程序中的其他地方使用 Root.plist,对吗?如果是这样,在这种情况下,如果您确实需要它以您描述的方式工作,我建议您创建两个 plist 文件,并在运行时合并它们。

换句话说,创建 Root.plist 仅包含您希望用户在 ios 设置页面中更改的字段(例如,不包含您当前尝试隐藏的字段),以及另一个包含其余部分的 .plist 文件您要在应用程序中处理的字段。

然后,在运行时,您首先加载 Root.plist,然后将另一个 .plist 文件的内容合并到您将使用的数据结构中。

不是很流畅,但可能会奏效。

【讨论】:

【参考方案2】:

经过进一步研究,我找到了我的问题的答案,以及我试图解决的问题的答案。

问题:可以隐藏/禁用 Settings.bundle/Root.plist 中的字段吗?回答:不能。

问题:如何安全地存储我的应用的身份验证信息?答案:内置钥匙串服务。

来源:Keychain Services Tasks for iOS

【讨论】:

这很奇怪。 Nike+ 应用程序设置会根据开关字段的状态禁用字段。未记录的功能? @batkuip 不,我认为这是因为 Nike+ 内置于 iOS 中。我从未见过其他应用这样做。 感谢您花时间启发我们;)+1【参考方案3】:

将 plist 中的类型从“文本字段”设置为“标题”,这样您将获得一个用户不再可编辑但应用程序可以读取的字段。

就 UI 一致性而言,它看起来不太正确,因此这可能不是禁用首选项项的理想解决方案。

【讨论】:

【参考方案4】:

当然可以。只需将项目类型更改为标题即可。

您仍然可以保存并从代码中读取它的值。但是,它不会出现在应用程序中。设置。

【讨论】:

如果是多值类型,改成title时会丢失数据。这不起作用。

以上是关于我可以隐藏/禁用 Settings.bundle 中的字段吗?的主要内容,如果未能解决你的问题,请参考以下文章

iPhone Settings.bundle的本地化

如何从 Objective-c/Swift 中的 settings.bundle 中检索值?

Settings.bundle 名称仍然是硬编码的?

phonegap 从 settings.bundle ios 获取值

如何本地化 settings.bundle 中的第二个 plist 文件?

iPhone Xcode Settings.bundle Plist