1

アプリの設定を試みていますが、何度も何度も見て、本の例やCraig Dunnのブログの例と比較しても、うまく機能しないようです。

構文は完璧でなければならないことを理解しています。今のところ、このファイルは1つのテキストフィールドを表示しようとしているだけで非常に単純です。私はこれを新しいプロジェクトで簡単に機能させましたが、それ以来、それを機能させることができませんでした。

これが私の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です。

この問題についてサポートをいただければ幸いです。ありがとう

4

2 に答える 2

5
  1. Settings.bundleディレクトリがプロジェクトのトップレベルに含まれていることを確認してください。トップレベルとは、ファイルシステム上で、Settings.bundleディレクトリがProjectName.csprojファイルと同じディレクトリにある必要があることを意味します。MonoDevelopでは、プロジェクトノードの下の最上位フォルダの1つとして表示されます。

  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キーが最上位のdictノードにないようです(必要です)。言い換えると:

ファイルの先頭にある次の行を削除します。

<dict>
<key>Root</key>

...そしてファイルの最後にある次の行の1つ:

</dict>

それはそれをする必要があります...

さて...そうは言っても、私は最近、個人的なサイドプロジェクトに設定を追加しようとしているときにこれを自分で理解し、Xamarinでこれを簡単にする必要があると判断しました。今後のMonoDevelop3.1でいくつかのマイナーな問題をすでに修正しましたが、Settings.bundleのテンプレートをMonoDevelopの「新しいファイルの追加」ウィザードに追加するために必要な時間を確保したいと思っています。また、Info.plistやEntitlements.plistの場合と同じように、plistキー/値のヒントを追加して、MonoDevelopのplistエディターがこれらのplistファイルを編集する際のガイドを改善できるようにします。

于 2012-12-08T16:04:42.373 に答える
0

手始めに、あなたはあなたのクロージングplist</plist>タグを逃しています。私の現在の設定には1つの設定しかありませんが、機能します。あなたは違いを見るためにあなたのものと比較することができます:

<?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>

これがお役に立てば幸いです。

于 2012-12-07T17:18:08.650 に答える