2016-01-13 231 views
2

我需要的是這樣的:NSCollectionView與頁眉和頁腳

enter image description here

但我的代碼做到這一點:

enter image description here

func collectionView(collectionView: NSCollectionView, viewForSupplementaryElementOfKind kind: String, atIndexPath indexPath: NSIndexPath) -> NSView { 
    let a = myView() 
    if kind == NSCollectionElementKindSectionHeader { 
     a.frame = NSMakeRect(0, 0, 1000, 10) 
    } 
    else if kind == NSCollectionElementKindSectionFooter { 
     a.frame = NSMakeRect(0, 0, 1000, 12) 
    } 
    return a 
} 

func numberOfSectionsInCollectionView(collectionView: NSCollectionView) -> Int { 
    return 3 
} 

override func numberOfItemsInSection(section: Int) -> Int { 
    if section == 0 { 
     return 5 
    } 
    else if section == 1 { 
     return 5 
    } 
    return 10 
} 

兩個頁眉和頁腳中的位置x = 0,y = 0,所以如何計算我的自定義視圖中的y位置(Header和頁腳)?

+0

你所需的水平滾動或固定寬度? –

+0

@ArunAmmannaya固定寬度 – Geek20

+0

然後使用UITableview可以輕鬆實現。 UITableview非常適合這種需求。 –

回答

2

根據蘋果的樣本項目CocoaSlideCollection,部分頁眉和頁腳可供NSCollectionViewFlowLayout,檢查出AAPLBrowserWindowControllerAAPLWrappedLayout的更多細節。

要轉換成夫特和英文:P,簡要解釋是如下:

  1. 實現NSCollectionViewDelegateFlowLayout
  2. 實現了兩種方法referenceSizeForHeaderInSectionreferenceSizeForFooterInSection
  3. viewForSupplementaryElementOfKind將步驟2之後被稱爲協議

對於第3步,我使用以下代碼

func collectionView(collectionView: NSCollectionView, viewForSupplementaryElementOfKind kind: String, atIndexPath indexPath: NSIndexPath) -> NSView { 
    var nibName: String? 
    if kind == NSCollectionElementKindSectionHeader { 
     nibName = "Header" 
    } else if kind == NSCollectionElementKindSectionFooter { 
     nibName = "Footer" 
    } 
    let view = collectionView.makeSupplementaryViewOfKind(kind, withIdentifier: nibName!, forIndexPath: indexPath) 
    return view 
} 

這裏使用的標識符nibName,鏈接到兩個筆尖文件我創建設置的NSView,即Header.xibFooter.xib

這是結果的CollectionView我得到。

NSCollectionView with Header and Footer

希望它能幫助,我創建了這個視頻教程。幫助它。

編輯1:

Sample Code現已

+1

**它的工作原理!!! **感謝您轉換成Swift和English:P – Geek20

+0

感謝您的支持。 –

0

我想你應該檢查兩件事情

首先是點擊您的集合視圖屬性檢查

你可以看到檢查兩個複選框,這樣

配件*節頭,頁腳節

二是覆蓋關鍵字

我想你應該把你的func關鍵字前面的override關鍵字!

+0

確實;爲什麼要重寫?他只是在協議中實現一項功能。編譯器應該抱怨它不是重寫方法。 –

+0

您確定關於_section標題,章節Footer_?因爲我沒有看到他們。 _Xcode 7.2_ – Geek20

+0

@NicolasMiari哦,我不知道它,如果它是協議,這不是問題! –