2016-03-02 165 views
0

代碼非常簡單,但我不知道爲什麼它不起作用。我想要做的是將第5個單元格的顏色或第二列和第二個單元格的顏色更改爲黑色,而不是白色。如何更改UICollectionView中特定單元格的顏色

import UIKit 

class ViewController: UIViewController { 

    @IBOutlet weak var x: UICollectionView! 

    var place = NSIndexPath(forItem: 1, inSection: 1) 

    @IBAction func y(sender: AnyObject) { 

     x.cellForItemAtIndexPath(place)?.backgroundColor = UIColor.blackColor() 

    } 

    @IBAction func z(sender: AnyObject) { 

     x.cellForItemAtIndexPath(place)?.backgroundColor = UIColor.whiteColor() 

    } 

} 

回答

1

如果要更改單元格的背景,那麼它的,你必須在內容查看管理,例如:

cell.contentView.backgroundColor = UIColor.whiteColor() 

所以你的情況,你可以取代你的功能:

@IBAction func y(sender: AnyObject) { 

    self.x.cellForItemAtIndexPath(place)?.contentView.backgroundColor = UIColor.blackColor() 

} 

@IBAction func z(sender: AnyObject) { 

    self.x.cellForItemAtIndexPath(place)?.contentView.backgroundColor = UIColor.whiteColor() 

} 

此外,如果要更改第五單元背景顏色的indexPath應該是:

var place = NSIndexPath(forItem: 4, inSection: 0) 

我注意到你正在嘗試做第1行和第1列,所以它的forItem:1和inSection:1,它不像IOS中那樣工作。 UICollectionView包含項目和部分,collectionView中的項目從左邊開始寫入item0 item1 item2 ..等等,默認情況下它在第0部分中,例如,您添加另一個部分,其中第1部分將放入其他項目,這將是item0,項目2,項目3 ..等,但其在第1節等等,這裏更多關於它:Apple Documentation

確保您設置數據源到你的ViewController:

class ViewController: UIViewController,UICollectionViewDataSource { 

     override func viewDidLoad() { 
     super.viewDidLoad() 

     x.dataSource = self 

    } 


    func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int { 

     return 1 
    } 


    func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 

     return 20 
    } 

    func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 
    let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) 

    // Configure the cell 


    return cell 
    } 
} 

它應該很好地工作,祝你好運 !

+0

謝謝,但它沒有工作,仍然沒有顏色變化... – PKLJ

+0

@PKLJ,檢查我更新的答案! – AaoIi

+0

@Aaoli有一個錯誤:類型ViewController不符合協議'UIViewDataSource',並且我的CollectionView有三行三列,NSIndexPath仍然是(forItem:4,inSection:0)? – PKLJ

相關問題