如何在 Swift 中向 Collection View Cell 添加删除按钮?
How to add a delete button to Collection View Cell in Swift?
现在我有一个使用按钮集合视图的滚动用户名列表。但我想为每一行添加重叠的删除按钮。它们需要附加到名称按钮并随它们滚动。
如何将这些按钮添加到我的 CollectionView 中?
(另外,出于显而易见的原因,我想跳过第一行的删除按钮)
当前代码:
//Add the cells to collection
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell: UsernameCollectionViewCell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as! UsernameCollectionViewCell
cell.usernameLabel.text = userNames [indexPath.row]
return cell
}
//Upon Selecting an item
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
if (indexPath.row == 0){
self.performSegueWithIdentifier("newUserSegue", sender: self)
}
else {
sendData(userNames[indexPath.row])
self.dismissViewControllerAnimated(true, completion: nil)
}
}
为什么不在 IB 中创建自定义 UICollectionViewCell 并向其添加按钮?
使用 :
将其注册到您的 collectionView
- registerNib:forCellReuseIdentifier:
您可以使用委托或通知来处理按钮点击。
成功了!方法如下:
- 我在情节提要中的单元格中添加了一个按钮。
- 已将插座连接到 UICollectionViewCell class。
将视图控制器代码编辑为:
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell: UsernameCollectionViewCell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as! UsernameCollectionViewCell
cell.usernameLabel.text = userNames [indexPath.row]
cell.deleteButton?.layer.setValue(indexPath.row, forKey: "index")
cell.deleteButton?.addTarget(self, action: "deleteUser:", forControlEvents: UIControlEvents.TouchUpInside)
// Remove the button from the first cell
if (indexPath.row == 0){
var close : UIButton = cell.viewWithTag(11) as! UIButton
close.hidden = true
}
return cell
}
func deleteUser(sender:UIButton) {
let i : Int = (sender.layer.valueForKey("index")) as! Int
userNames.removeAtIndex(i)
UserSelectCollection.reloadData()
}
非常感谢 JigarM 在 GitHub 上提供的示例:
https://github.com/JigarM/UICollectionView-Swift
现在我有一个使用按钮集合视图的滚动用户名列表。但我想为每一行添加重叠的删除按钮。它们需要附加到名称按钮并随它们滚动。
如何将这些按钮添加到我的 CollectionView 中? (另外,出于显而易见的原因,我想跳过第一行的删除按钮)
当前代码:
//Add the cells to collection
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell: UsernameCollectionViewCell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as! UsernameCollectionViewCell
cell.usernameLabel.text = userNames [indexPath.row]
return cell
}
//Upon Selecting an item
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
if (indexPath.row == 0){
self.performSegueWithIdentifier("newUserSegue", sender: self)
}
else {
sendData(userNames[indexPath.row])
self.dismissViewControllerAnimated(true, completion: nil)
}
}
为什么不在 IB 中创建自定义 UICollectionViewCell 并向其添加按钮? 使用 :
将其注册到您的 collectionView- registerNib:forCellReuseIdentifier:
您可以使用委托或通知来处理按钮点击。
成功了!方法如下:
- 我在情节提要中的单元格中添加了一个按钮。
- 已将插座连接到 UICollectionViewCell class。
将视图控制器代码编辑为:
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { let cell: UsernameCollectionViewCell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as! UsernameCollectionViewCell cell.usernameLabel.text = userNames [indexPath.row] cell.deleteButton?.layer.setValue(indexPath.row, forKey: "index") cell.deleteButton?.addTarget(self, action: "deleteUser:", forControlEvents: UIControlEvents.TouchUpInside) // Remove the button from the first cell if (indexPath.row == 0){ var close : UIButton = cell.viewWithTag(11) as! UIButton close.hidden = true } return cell } func deleteUser(sender:UIButton) { let i : Int = (sender.layer.valueForKey("index")) as! Int userNames.removeAtIndex(i) UserSelectCollection.reloadData() }
非常感谢 JigarM 在 GitHub 上提供的示例: https://github.com/JigarM/UICollectionView-Swift