6

当您可以选择不同的模板并且每个视图包含不同的信息具有不同的大小等时,我想要类似于 iWork 如何为 Pages 提供模板选择屏幕的东西。

我已经尝试继承 NSCollectionView 并使用 newItemForRepresentedObject 方法确定要显示的视图(而不是使用 itemPrototype 视图界面生成器),但由于某种原因它没有正确定位视图,并且它没有显示正确的视图数量存在的项目数。这是我的代码。我希望有人可能有更好的方法来做到这一点,或者一个如何做到这一点的例子。

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;

}

4

1 回答 1

0

(似乎甚至不可能使用不同大小的项目视图制作 NSCollectionView;每个大小都需要是某个“主要”大小的倍数或整数除数,并且您需要进行大量项目检查和 -重新排序以确保甚至可以在网格中呈现它们。你确定你问的是正确的问题吗?)

另外,我在 iWork 中看不到这样的东西:它的模板选择器中的所有视图都是相同的。(尽管他们的 NSImageView子视图大小不同。)我建议尽可能使用相同的视图并适当地更改其子视图。例如,绑定文本字段的“隐藏”属性或更改图像视图的宽度很容易。你不能制作一个适用于两个类的单一视图,根据表示的对象适当地改变自己吗?

于 2010-03-07T04:58:31.893 回答