【发布时间】:2016-06-05 21:58:29
【问题描述】:
我有一个 UICollectionView,其中包含从我的 AssignmentManager 类填充的单元格。当用户想要删除分配时,他们按住一个单元格,以便删除按钮出现在他们单击的单元格上。使用下面的代码,当用户单击一个单元格时,删除按钮会出现在每个单元格上。如何使用 UIGestureRecognizer 解决此问题?我该怎么做才能指定用户在我的代码中按住并按住的单个单元格?任何帮助将不胜感激。
*需要注意的事项:我只包含了我认为与问题相关的以下代码。如果需要,我可以添加更多。也是的,我确实将 deleteButton 拼错为 delteButton。如果这让任何人感到困惑,我很抱歉。
var userWantsToRemoveDeleteButton: Bool = false
var userDelete: Bool = false
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! homeworkcell
cell.delteButton.hidden = true
cell.delteButton.enabled = false
if userDelete == true {
cell.delteButton.hidden = false
cell.delteButton.enabled = true
if userWantsToRemoveDeleteButton == true {
cell.delteButton.hidden = true
cell.delteButton.enabled = false
}
}
// add button gestures
cell.delteButton?.layer.setValue(indexPath.item, forKey: "index")
cell.delteButton?.addTarget(self, action: "deleteAssignment:", forControlEvents: UIControlEvents.TouchUpInside)
// add the swipe gestures
let longPress = UILongPressGestureRecognizer(target: self, action: "deleteMode:")
cell.addGestureRecognizer(longPress)
let assignments = AssignmentManager.assignments[indexPath.item]
cell.myLabel.text = assignments.title
cell.assignment = assignments
cell.dueLabel.text = dateString
cell.myLabel.textColor = UIColor.whiteColor()
cell.backgroundColor = UIColor.blueColor()
cell.layer.borderColor = UIColor.blackColor().CGColor
cell.layer.borderWidth = 1
cell.layer.cornerRadius = 8
return cell
}
func deleteMode(sender: UISwipeGestureRecognizer) {
userDelete = true
userWantsToRemoveDeleteButton = false
collectionView.reloadData()
doneEditingButton.enabled = true
}
func deleteAssignment(sender: UIButton) {
let i : Int = (sender.layer.valueForKey("index")) as! Int
AssignmentManager.deleteAssignment(i)
NSUserDefaultsManager.synchronize()
collectionView.reloadData()
}
【问题讨论】:
标签: ios swift uibutton uigesturerecognizer uicollectionviewcell