我有一个UICollectionView,用户可以从中选择要添加到数组的单元格中的数据。我试图在点击时突出显示所选单元格,并在再次点击时取消突出显示它们。在突出显示和取消突出显示的相同代码中,我想添加/删除数组中的数据。将数据添加到数组中没有问题,但我无法弄清楚如何在未突出显示时将其删除。
代码在这里:
wkhtmltopdf http://google.com google.pdf
答案 0 :(得分:2)
使用removeAtIndex(index: Int)
方法删除项目
var removeFromList = [NSString]()
if let index = find(removeFromList, objectIds[indexPath.row] as! NSString) {
removeFromList.removeAtIndex(index)
}
答案 1 :(得分:0)
由于数组正在用作列表,因此您需要在删除元素之前找到索引。使用Swift的find
方法:
removeFromList.removeAtIndex(find(removeFromList, objectIds[indexPath.row])!)
此方法的问题是find
不能与AnyObject一起使用。循环遍历数组并比较每个术语也不会起作用,因为AnyObject无法比较。您需要将removeFromList和objectId更改为更具体的类。
使这段代码变得更漂亮"并且当它试图删除不在数组中的东西时阻止你的应用程序崩溃,你应该使用数组类的扩展。不幸的是,您必须为每种数据类型创建一个新函数。
func removeObjMyClass(inout arr: [MyClass], obj: MyClass) {
if let index = find(arr, obj) {
arr.removeAtIndex(index)
}
}
removeObjMyClass(&removeFromList, objectIds[indexPath.row])
答案 2 :(得分:0)
使用字典:
var removeFromList = [NSIndexPath:AnyObject]()
if cell!.tag == 0 {
cell!.layer.borderWidth = 2.0
cell!.layer.borderColor = UIColor.blueColor().CGColor
removeFromList[indexPath] = objectIds[indexPath.row]
cell!.tag = 1
} else {
cell!.layer.borderWidth = 0.0
cell!.tag = 0
removeFromList.removeValueForKey(indexPath)
}