在 Swift 中设置 UICollectionView 删除按钮
Posted
技术标签:
【中文标题】在 Swift 中设置 UICollectionView 删除按钮【英文标题】:Set up a UICollectionView delete button in Swift 【发布时间】:2015-08-18 09:13:47 【问题描述】:我正在构建一个应用程序,它使用集合视图来显示用户可以删除的数据。
在原型单元格中,我创建了一个按钮,该按钮现在出现在所创建的每个单元格中(一个小 X)。如何设置按钮来告诉我应该删除哪个单元格(如 indexPath.row)?
原则上,我想做这样的事情,但在 Swift 中:link
如果有任何帮助,我将不胜感激!谢谢
【问题讨论】:
【参考方案1】:- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
...
UIButton *myButton = [[UIButton alloc] initWithFrame:CGRectMake(123, 123, 40, 40)];
[myButton setTitle:@"X" forState:UIControlStateNormal];
[myButton setBackgroundImage:[UIImage imageNamed:@"cellDeleteBtn.png"] forState:UIControlStateNormal];
[myButton setTag:indexPath.row];
[myButton addTarget:self action:@selector(deleteCellFromButton:) forControlEvents:UIControlEventTouchUpInside];
[cell addSubview:myButton];
return cell;
- (void)deleteCellFromButton:(UIButton *)button
[myMutableArray deleteItemAtIndex:button.tag];
[collectionView reloadData];
这是一个 Swift 版本:
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell
var myButton: UIButton = UIButton(frame: CGRectMake(123, 123, 40, 40))
myButton.setTitle("X", forState: UIControlStateNormal)
myButton.setBackgroundImage(UIImage.imageNamed("cellDeleteBtn.png"), forState: UIControlStateNormal)
myButton.setTag(indexPath.row)
myButton.addTarget(self, action: "deleteCellFromButton:", forControlEvents: UIControlEventTouchUpInside)
cell.addSubview(myButton)
return cell
func deleteCellFromButton(button: UIButton)
myMutableArray.deleteItemAtIndex(button.tag)
collectionView.reloadData()
【讨论】:
对不起,现在才看到它很快。更新了标题 我不确定如何设置 indexPath.row 你不知道怎么设置是什么意思。你在什么时候挣扎然后我们可以从那里进一步解释。 从按钮创建插座时出现错误:插座因重复内容而无效(即它出现在每个单元格中) 由于无法创建outlet,以上方法都行不通【参考方案2】:serviceView.collectionArray.removeAtIndex(path.row)
serviceView.collectionView.deleteItemsAtIndexPaths([path])
【讨论】:
该按钮没有 indexPath.row,因为它在每个单元格中都可用 然后用 indexPath.row 标记按钮? 我更新了我的 ObjC 答案,可能有助于在 Swift 中自己完成。 :)以上是关于在 Swift 中设置 UICollectionView 删除按钮的主要内容,如果未能解决你的问题,请参考以下文章