2010-02-22 60 views
6

我想類似的iWork如何對網頁的模板選擇屏幕時,您可以選擇不同的模板,每個視圖包含不同信息的東西有差異的大小等有沒有辦法在NSCollectionView中有不同的視圖?

我試圖繼承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

也許這可能會有所幫助:http://stackoverflow.com/questions/1210352/how-do-i-bind-programatically-in-the-view-subclass-of-my-nscollectionview?rq=1 – 2012-08-30 16:51:34

回答

0

(它甚至不似乎可能使一個NSCollectionView用不同大小的項目的意見;各尺寸將需要一些「主要」大小的倍數或整數除數,和你需要做大量的項目檢查和 - 排序,以確保它甚至可以呈現在網格中。你確定你問的是正確的問題嗎?)

此外,我什麼也沒看到像iWork一樣:模板選擇器中的所有視圖都是相同的。 (雖然他們的NSImageView 子視圖是不同的大小。)我會建議,如果儘可能使用相同的觀點,並適當地改變它的子視圖。例如,綁定文本字段的「隱藏」屬性或更改圖像視圖的寬度很容易。難道你不能製作一個適用於這兩個類的單一視圖,根據表示的對象適當地改變它自己嗎?

相關問題