3

XCode 4.1を使用すると、CollectionViewを使用しようとするとクラッシュが発生します。

これらは私が行っているステップです:

  1. 新しいプロジェクトから、MainMenu.nibファイルを編集します。
  2. NSCollectionViewをウィンドウに追加します。これにより、コレクションビューアイテムも追加され、新しいビューに新しいビューが追加されます。
  3. NSTextFieldのようなコントロールを追加します
  4. コントロールを選択し、インスペクターをバインディングペインに切り替えます。
  5. コレクションビューアイテムに何かをバインドしようとしました。ドロップダウンメニューでコレクションビューアイテムを選択すると、[内部エラー]ダイアログが表示されます。このダイアログから続行しようとすると、XCodeを再起動するまでバインディングペインが非表示になります

これは他の誰かに起こりますか、それとも私が遭遇していることですか?XCodeまたはコードのいずれかでコレクションビューアイテム(最終的にはpresentedObject値にバインドしたい)にバインドできるようにする方法はありますか?

別のnibファイルを使用するカスタムNSCollectionViewItemサブクラスを作成し、それをNSCollectionViewのitemPrototypeとして設定しようとしましたが、問題が発生しました。

4

3 に答える 3

6

コレクションビューアイテムビューを独自のXIBに分割し、接続を再配線して、コレクションビューアイテムのプロトタイプが新しいXIBをロードできるようにすると、クラッシュすることなくInterfaceBuilderでバインディングを作成できることがわかりました。私はこれらの手順に従いました...

  1. デフォルトのxibからコレクションビューアイテムビューを削除します。
  2. NSCollectionViewItemから継承する新しいビューとXIBを作成します。
  3. 新しいビューでコレクションビューアイテムを作成します。
  4. フィールドを新しいビューのファイル所有者にバインドします。
  5. コレクションビューxibに戻り、コレクションビューアイテムのプロパティを更新して、新しいxibのビン名をロードします。

プログラムで実行するよりも速いかどうかはわかりませんが、コードを記述せずにバインディングを管理できます。現在、このように機能するアプリがいくつかあります。

于 2011-08-05T18:54:24.967 に答える
1

一時的な回避策を見つけました:

「コレクションビューアイテム」を選択し、「属性インスペクター」→「ビューコントローラー」設定で、「ペン先名」を「メインメニュー」に設定します。

これを実行すると、クラッシュすることはなく、バインディングを設定できます。アプリを作成するときは、必ず「ニブ名」設定をクリアしてください。

于 2011-10-04T12:05:40.300 に答える
0

はい、Interface Builder 3でも、このバグを確認できます。

唯一の回避策は、プログラムでバインディングを実行することです。

[textField bind:@"value" toObject:collectionViewItem withKeyPath:@"representedObject.foo" options:nil];
于 2011-07-29T17:36:32.797 に答える