NSCollectionViewItem
Xcode 3.1.2では、サブクラスのnib を次のNSCollectionViewItem
ようにロードしていました。
-(id)copyWithZone:(NSZone *)zone
{
id result = [super copyWithZone:zone];
[NSBundle loadNibNamed:@"PersonView" owner:result];
return result;
}
10.6 未満の Xcode 3.2 では、同じメソッドでエラーが発生することはありませんが、NSCollectionView
どちらのビューも読み込まれません。
ビューを表示するために他に何かする必要がありますか? NSCollectionItem
または、スーパークラスをに変更することで、これを行うより良い方法はありNSViewController
ますか?
結局のところ、copyWithZone
この標準機能を実現するためにオーバーライドすることは、私には常にハックのように思えました。IB で使用されるペン先を指定できるようにすべきだと思いますが、Apple はそうは考えていないようです。
ドキュメントで利用可能な例を見ましたが、を使用してNSCollectionViewItem
プログラムでインスタンス化さinitWithNibName
れていますが、IBで作成したいと思います。
更新:
kperryua が提案したことを実行しましたが、今では からアウトレットにアクセスできませんNSCollectionViewItem
。これが私がやろうとしていることです:
- (void)setRepresentedObject:(id)object {
if (object) {
[labelName setValue:[object name]];
}
}
ラベル名をファイル所有者にバインドしました。これは私のNSCollectionViewItem
. これは 10.5 で完全に機能していましたが、現在はアウトレットが割り当てられていません (GDB で確認しました)。
バインディングを示す画像 http://img21.imageshack.us/img21/671/picya.png
更新 2 :
また、を(PersonController)NSCollectionView
のitemPrototype
サブクラスにバインドしました。NSCollectionViewItem
バインディングを示す画像 http://img503.imageshack.us/img503/4672/pic2d.png
File's Owner
これで、 のPersonView.nib
と のitemPrototype
の両方がNSCollectionView
サブクラスを指しています。
コンソール出力を示す画像 http://img340.imageshack.us/img340/6184/pic3.png
スクリーンショットでわかるように、アイテムは表示されますが、コンセントlabelName
にアクセスできないため、ラベルのテキストを変更できません。
「名前」ではないことを確認するために、設定しようとしている名前も記録しました。
ラベルの値を変更するには、何をする必要がありますか?
どんな助けでも大歓迎です。