当我可以选择不同的模板时,我想要类似于iWork的页面模板选择屏幕的方式,并且每个视图包含不同的信息有不同的大小等。
我已经尝试了子类化NSCollectionView并使用newItemForRepresentedObject方法确定要显示的视图(而不是使用itemPrototype视图Interface Builder),但由于某种原因它没有正确定位视图,并且它没有显示正确的数字对于存在的项目数量的意见。这是我的代码。我希望有人可能有更好的方法来做到这一点,或者是如何做到这一点的一个例子。
personView和companyView是子类NSCollectionView中的属性,它们是IB中视图的IBOutlets。
-(NSCollectionViewItem *)newItemForRepresentedObject:(id)object{
NSCollectionViewItem *collectionViewItem = [[NSCollectionViewItem alloc] init];
[collectionViewItem setRepresentedObject:object];
if([[object valueForKey:@"company"] boolValue] == YES){
NSView *view = [companyView retain];
[collectionViewItem setView:companyView];
}else{
[collectionViewItem setView:personalView];
}
return collectionViewItem;
}
答案 0 :(得分:0)
(甚至似乎不可能使用不同大小的项目视图制作NSCollectionView;每个大小需要是某个“主”大小的倍数或整数除数,并且您需要执行大量项目 - 检查和重新排序,以确保它们甚至可以在网格中呈现。你确定你问的是正确的问题吗?)
另外,我在iWork中看不到这样的内容:其模板选择器中的所有视图都是相同的。 (虽然他们的NSImageView 子视图具有不同的大小。)我建议尽可能使用相同的视图并适当地更改其子视图。例如,绑定文本字段的“隐藏”属性或更改图像视图的宽度很容易。你不能制作一个适用于这两个类的单一视图,根据所代表的对象进行适当的改变吗?