2012-12-07 18 views
1

我一直在尝试设置我的应用程序的设置,但我似乎无法得到这个工作,即使我一遍又一遍地查看它并将其与一个示例进行比较一本书和example on Craig Dunn's blogMonoTouch:Settings.bundle文件问题

我明白,语法必须是完美的,这个文件很简单,现在我只是想显示一个文本框。我确实在一个全新的项目上简单地做了这个工作,但是自那时起,我还没有设法使它工作。

这里是我的Root.plist文件的XML:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
<key>Root</key> 
<dict> 
    <key>PreferenceSpecifiers</key> 
    <array> 
     <dict> 
      <key>Title</key> 
      <string>Group Name</string> 
      <key>Type</key> 
      <string>PSGroupSpecifier</string> 
     </dict> 
     <dict> 
      <key>AutocapitalizationType</key> 
      <string>None</string> 
      <key>AutocorrectionType</key> 
      <string>No</string> 
      <key>Key</key> 
      <string>usernameTextField</string> 
      <key>Title</key> 
      <string>Username</string> 
      <key>Type</key> 
      <string>PSTextFieldSpecifier</string> 
     </dict> 
    </array> 
</dict> 
</dict> 
</plist> 

正如我所说的,我在它看起来相当多的时间,我看不到它的任何问题。文件构建操作设置为“内容”,“复制到输出目录”设置为“始终复制”。我使用的MonoTouch版本是6.0.7。

我很感谢这个问题的任何帮助。谢谢

+0

你能准确解释你所看到的行为是什么以及你期望的行为是什么? –

+0

我看到的行为是在“设置”应用程序中没有显示自定义设置选项。我期待看到一个添加的用户名文本框。但是,我所看到的只是MonoTouch调试设置。我试着将它作为发布版本运行,但设置只是空白。 – Serberuss

回答

5
  1. 确保Settings.bundle目录包含在项目的顶层。就顶层而言,我的意思是在文件系统上,Settings.bundle目录应该和你的ProjectName.csproj文件在同一个目录下。在MonoDevelop中,它将显示为项目节点下的顶级文件夹之一。

  2. 将Root.plist构建操作设置为BundleResource(不要启用“复制到输出目录”提示:如果您发现自己设置“复制到输出目录”,不要这样做 - 几乎总是出错事情 - 我们实际上已经讨论完全移除选项)现在

,为plist文件格式 - 这里是它应该是什么样子:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>PreferenceSpecifiers</key> 
    <array> 
     <dict> 
      <key>Type</key> 
      <string>PSGroupSpecifier</string> 
      <key>Title</key> 
      <string>Group Name</string> 
     </dict> 
     <dict> 
      <key>Type</key> 
      <string>PSTextFieldSpecifier</string> 
      <key>Title</key> 
      <string>Username</string> 
      <key>AutocapitalizationType</key> 
      <string>None</string> 
      <key>AutocorrectionType</key> 
      <string>No</string> 
      <key>KeyboardType</key> 
      <string>Alphabet</string> 
      <key>IsSecure</key> 
      <false/> 
      <key>Key</key> 
      <string>usernameTextField</string> 
      <key>DefaultValue</key> 
      <string></string> 
     </dict> 
    </array> 
    <key>StringsTable</key> 
    <string>Root</string> 
</dict> 
</plist> 

看着你Root.plist文件,看起来PreferenceSpecifiers键不在top-lev中el字典节点(它需要)。换句话说:

<dict> 
<key>Root</key> 

...并在文件的结尾以下行之一:

</dict> 

在文件的顶部摆脱以下行

这应该这样做...

现在......所有这些说,我刚刚想出了自己的想法,同时试图将设置添加到我的个人项目,并决定我们,在Xamarin,需要使这个电子asier。我已经在即将到来的MonoDevelop 3.1中解决了一些小问题,但是我希望能够将需要添加的Settings.bundle模板添加到MonoDevelop的“添加新文件”向导中。我还想像我们为Info.plist和Entitlements.plist那样添加plist键/值提示,这样MonoDevelop的plist编辑器可以在编辑这些plist文件时更好地引导您。

+0

完美的,一旦我删除了开始的根元素,它工作绝对好。感谢您的一篇非常有用的文章 – Serberuss

0

对于初学者,你错过了你的闭幕plist </plist>标签。我目前的只有一个设置,但它的工作原理。你可以比较你的看到的差异:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" 
    "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>PreferenceSpecifiers</key> 
    <array> 
     <dict> 
      <key>Type</key> 
      <string>PSToggleSwitchSpecifier</string> 
      <key>Title</key> 
      <string>Stay Signed-In</string> 
      <key>Key</key> 
      <string>staySignedIn</string> 
      <key>DefaultValue</key> 
      <true/> 
     </dict> 
    </array> 
</dict> 
</plist> 

我希望这可以帮助。

+0

对不起我的错误。该文件实际上有一个关闭标签我一定错过了,当我将内容复制到这里。我原来的帖子已更新。 – Serberuss