0

嗨,我使用側滾動UICollectionView來顯示用戶所創建的人員組。這些組存儲在我的服務器上,當視圖加載時,它們從服務器加載。不過,我希望第一個單元格始終保持相同,這是一個可以創建組的單元格。這是我需要的佈局。UICollectionView將第一個單元格設置爲始終是特定內容

enter image description here

我知道如何使用多個不同的定製單元,但如何使它所以第一個單元格是靜態的,之後,從我的服務器負載量的細胞?謝謝:)

func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
    return familyName.count 
} 

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 

    if indexPath.row == 0 { 
    let cell : AddGroupCollectionViewCell = collectionViewOutlet.dequeueReusableCellWithReuseIdentifier("Add", forIndexPath: indexPath) as! AddGroupCollectionViewCell 

    return cell 

    } else { 

    let cell : FriendGroupsCell = collectionViewOutlet.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as! FriendGroupsCell 


    cell.groupImage.image = UIImage(named: "pp") 
    cell.groupNameLabel.text = familyName[indexPath.row] 

    return cell 
    } 
} 

這是我的代碼,它錯過了數組中的第一個人,因爲索引路徑跳過它。我該如何修改它才能正常工作

回答

2

UICollectionViewCell利用重用技術來提高性能。記住這一點。細胞中沒有任何東西可以是靜態的,因爲這個細胞稍後將在另一個指標上。

您可以使用collectionView:cellForItemAtIndexPath:通過indexPath.row == 0

,使第一個單元格總是加載相同的圖像/標籤,你可以使用prepareReuse方法來清理資源在細胞中。因此,如果2號細胞將成爲新的一號細胞,它將有機會清理舊資源。

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 
    let cell : AddGroupCollectionViewCell = collectionViewOutlet.dequeueReusableCellWithReuseIdentifier("Add", forIndexPath: indexPath) as! AddGroupCollectionViewCell 
    if indexPath.row == 0 { 
     cell.groupImage.image = UIImage(named: "new") 
     cell.groupNameLabel.text = "new" 
    } else { 
     cell.groupImage.image = UIImage(named: "pp") 
     cell.groupNameLabel.text = familyName[indexPath.row] 
    } 
    return cell 
} 
+0

我發佈了一些代碼 – Eli

+0

您不必使用兩個單元格標識符,因爲第一個和其餘部分沒有區別。他們只是不同的外觀和事件。只需使用一個並自定義它們。當然,你可以根據你的需要使用兩個標識符,但關鍵是你知道如何去做......我認爲現在很明顯。 – Wingzero

+0

我明白了,不好使用這個。但即使這仍然會跳過我的familyName數組中的第一項,因爲第一次調用它將是0,第二次它將是1,這意味着它會跳過我無法擁有的familyName [0]?我可以使用indexPath.row-1,但這不正確的做法是不是? – Eli

相關問題