私のNSCollectionViewが互いにNSCollectionアイテムを描画しています。 UPDATE:私は、サンプルプロジェクト GitHub Sample ProjectNSCollectionViewが互いにNSCollectionViewItemsを描画しています
UPDATEを追加しました:これは、やや When the app first launches it looks like this
UPDATE 私の現在の例が独自のnibファイルに現在ある2つのビューがあり変更されました専用のNScollectionViewItem
オブジェクトでは、テストのために現在同じです。私は基本的にNSCollectionViewItemを持っています。これは子としてNSTextFieldを持つビューを持っています。すべての制約があります。
コレクションビューでは、グリッドコントローラとして設定されており、理想的には1つの列が必要です。
は、データとそれをロードするために、私は自分のViewController NSCollectionViewDataSource作られ、そして- (NSInteger)collectionView:(NSCollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
と- (NSCollectionViewItem *)collectionView:(NSCollectionView *)collectionView itemForRepresentedObjectAtIndexPath:(NSIndexPath *)indexPath
更新されたコード 完全なコードが含ま実装:
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
[collectionView registerClass:ItemOne.class forItemWithIdentifier:@"Item1"];
[collectionView registerClass:ItemTwo.class forItemWithIdentifier:@"Item2"];
cellArray = [@[@"Item1", @"Item2", @"Item1", @"Item2", @"Item1"] mutableCopy];
}
- (void)setRepresentedObject:(id)representedObject {
[super setRepresentedObject:representedObject];
// Update the view, if already loaded.
}
#pragma mark - NSCollectionViewDatasource -
- (NSInteger)collectionView:(NSCollectionView *)collectionView
numberOfItemsInSection:(NSInteger)section {
// We are going to fake it a little. Since there is only one section
NSLog(@"Section: %ld, count: %ld", (long)section, [cellArray count]);
return [cellArray count];
}
- (NSCollectionViewItem *)collectionView:(NSCollectionView *)collectionView
itemForRepresentedObjectAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"IndexPath: %@, Requested one: %ld", indexPath, [indexPath item]);
NSLog(@"Identifier: %@", [cellArray objectAtIndex:[indexPath item]]);
NSCollectionViewItem *theItem = [collectionView makeItemWithIdentifier:[cellArray objectAtIndex:[indexPath item]] forIndexPath:indexPath];
return theItem;
}
UPDATE ItemOneをItemTwoクラスは両方とも空のクラスであり、それぞれのペン先はラベル付きのビューを持つNSCollectionViewItem
を持っています。ビューはNSCollectionViewItem
のビュープロパティによってNSCollectionViewItem
に接続されています。
レイアウト:グリッド寸法:最大行数:0最大列:1分項目サイズ: 幅:250を次のように
NSCollectionView
グリッドが設定されているデフォルトのものを除いては制約がありません...高さ:150最大アイテムサイズ:幅:250高さ:150
これは、この時点でデータソースと結びついていない全体を設定するためのコードです。
設定を変更したり、フローにCollectionViewの種類を変更しても何も変更されていなくても同じように見えます。
私はAutoLayoutの問題として、元々いくつかの自動レイアウトの問題があったが、これらはすべて解決されていたため、この問題に近づいています。
ご協力いただければ幸いです。
進歩しました!私はストーリーボードからNSCollectionViewItemsを削除し、そこにカスタムクラスのnibを入れました。私はクラスを登録し、識別子を含むように配列を変更しました。グリッドが1つの列に設定されていても、どちらのビューも2つの別々の列に読み込まれます。ビューをスクロールするとすぐに、2つのNSCollectionViewItemが再び1つになります。 – Tempus
私はあなたのコードを試して、それは動作します。アイテムからすべての制約を削除するとどうなりますか?どのようにグリッドレイアウトを設定しましたか? – Willeke
私はこれをすべて間違って考えていたようです。だから私はGitHub Repoで動作するバージョンを持っていますが、GridではなくFlowで動作し、Gridが動作することを期待していたことはありません。ビューサイズと同じ大きさのアイテムサイズを作成することで、単一の列を作成することができます。だからそれは働いているのです。しかし、私は異なる高さのビューを持つことができるかどうかを確認したい – Tempus