如何更改已点击的UICollectionViewCell的背景图像?

时间:2015-05-22 20:41:57

标签: ios swift uicollectionview

我有多个didSelectItemAtIndexPath。当用户点击特定单元格时,我希望我的应用程序更改触摸单元格的背景图像。

我的方法是专注于func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) { var cell: UICollectionViewCell = collectionView.dequeueReusableCellWithReuseIdentifier("cellIdentifier", forIndexPath: indexPath) as! UICollectionViewCell cell.backgroundView = UIImageView(image: UIImage(named: "myImage")) } 方法。触摸单元格时,将调用此方法。

indexPath

然而,我不能让它工作,但我不知道为什么。该问题可能与indexPath.row有关,但不会返回正确的单元格值。我尝试使用Int,这确实会返回UICollectionViewCell个单元格。

更重要的是,我还使用var创建了一个新的UICollectionViewCell,但此单元格已经存在。

为什么单元格不更新其背景图像?如何更改用户触摸的angular.module('Cust').factory('CustomizingService', ['$resource', function ($resource) { var url = 'http://localhost:31736/Service1.svc/:link/'; return { Customizing: $resource(url, {callback: 'JSON_CALLBACK'}, { customers: { method: 'JSONP', transformResponse: function(data) {return angular.fromJson(data).body.rows}, params: { link: 'GetCustomers', numberOf: '@numberOf', valid = @valid }, isArray: true },... 的背景图像?

1 个答案:

答案 0 :(得分:4)

我完全赞同Josh的答案,但是如果你使用didSelectItemAtIndexPath方法更改背景图像,它也可以正常工作。然后,您可以使用cellForRowAtIndexPath方法返回指定UITableViewCell处的indexPath,如下所示:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {        
    var cell = tableView.cellForRowAtIndexPath(indexPath) as UITableViewCell!
    cell.backgroundView = UIImageView(image: UIImage(named: "photo2"))        
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    var cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! UITableViewCell
    cell.backgroundView = UIImageView(image: UIImage(named: "photo1"))
    cell.selectionStyle = .None
    return cell
}

我只是将selectionStyle放到.None以避免突出显示。我希望这能帮到你。