获取哪个UIcollectionviewcell我正在触摸的textview

时间:2017-01-24 08:02:23

标签: ios swift swift3 uicollectionview uicollectionviewcell

我有一个UICollectionView,每个单元格都有一个UITextView。我想在TextView中长按文本并从上下文菜单中选择删除时,可以删除整个单元格。

我知道我可以通过覆盖

覆盖删除
func delete(_ sender: Any?) {//I want to delete cell from here}

override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
    if action == #selector(delete(_:))
    {
        return true
    }
    return super.canPerformAction(action, withSender: sender)
}

我只是不知道如何找到我当前的细胞。

4 个答案:

答案 0 :(得分:0)

在您的func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell设置indexPath.row中作为UITextView的标记。然后在您的func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath)或UITextView长按中,您可以访问UITextView的标签,这有助于查找当前的单元格。

您可以使用以下代码访问当前单元格:

let indexPath = IndexPath(row: textview.tag, section: 0)
let yourCell = self.collectionView.cellForItem(at: indexPath)

我希望这会对你有所帮助,或者你遇到任何其他问题,让我知道:)

答案 1 :(得分:0)

在将单元格添加到集合视图时,将标记赋予textfield,该文本字段应等于当前indexPath。当触发长按监听器时,检查标签值并根据该值进行操作。

答案 2 :(得分:0)

Swift 3解决方案: 所以有些人很接近,但每个人几乎把我带到了正确的道路上。解决方案并没有完全回答我的问题,但它可以与手势识别器结合使用来专门回答这个问题。

所以我的解决方案基于我的代码格式化方式,可能需要为其他人调整。

第一: 从UICollectionViewCell子类,当然我的textview实现,我覆盖了内置的删除功能。从那里创建了一个变量,它使用单元格superview进行实例化,这是一个UICollectionView。这允许我获取单元格的indexPath。从那里我还创建了一个变量,它使用UIView实例化我的UICollectionView所在的位置。从那里我在我的UIView中创建了一个函数,它接受一个I​​ndexPath并删除该单元格。

在UICollectionViewCell内部:

subscribeOn

内部UIView:

override func delete(_ sender: Any?) {
    let cv = self.superview as! UICollectionView
    let indexPath = cv.indexPath(for: self)
    let view = self.superview?.superview as! UIView
    view.delCell(indexPath!)
}

答案 3 :(得分:-1)

func deleteSections(IndexSet) 删除指定索引处的部分。

func deleteItems(at:[IndexPath]) 删除指定索引路径的项目