我的 NSCollectionView 正在将我的 NSCollection 项目相互绘制。 更新:我添加了一个示例项目 GitHub 示例项目
更新:这已经有所改变 当应用程序首次启动时,它看起来像这样
更新
我当前的示例有两个视图,它们当前位于自己的 nib 文件中,具有专用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;
}
更新
ItemOne 和 ItemTwo 类都是空类,每个类的 nib 都有NSCollectionViewItem
一个带有标签的视图。ViewNSCollectionViewItem
通过 中的 view 属性连接到NSCollectionViewItem
。目前除了默认限制外没有其他限制
NSCollectionView
网格设置如下:
布局:网格尺寸:最大行数:0 最大列数:1 最小项目尺寸:宽度:250 高度:150 最大项目尺寸:宽度:250 高度:150
这是设置整个事物的代码,此时不将其绑定到数据源。
似乎无论我如何更改设置,甚至将 CollectionView 类型更改为 Flow 都不会改变任何内容,它看起来都一样。
我一直将此作为 AutoLayout 问题处理,因为最初存在一些自动布局问题,但这些问题都已解决。
任何帮助将不胜感激。