如何在swift3中实现多项选择?

时间:2017-05-24 19:03:43

标签: ios uitableview swift3 uilongpressgesturerecogni

目前,我已经在我的桌面视图中添加了长按手势。它工作正常。现在我想要的是,如果我长按任何UITableview单元格,该单元格应该被选中,之后如果我点击下一个单元格也应该被选中。 以下是代码:

 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 10
    }

     func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
        let row = indexPath.row
        cell.textLabel?.text = "Label"

        return cell
}


    @IBAction func longPress(_ guesture: UILongPressGestureRecognizer) {

        if guesture.state == UIGestureRecognizerState.began {
            print("Long Press")
        }
    }

1 个答案:

答案 0 :(得分:0)

您可以在tableView方法中设置allowsMultipleSelection&#39} longPress属性。由于longPress不会触发cell的选择,您可以使用gesturetableView的位置来获取初始单元格对应于longPress操作。

func longPress(sender:UILongPressGestureRecognizer)  {
    switch sender.state {
    case .began:
        tableView.allowsMultipleSelection = true
        let point = sender.location(in: tableView)
        selectCellFromPoint(point: point)
    default:break
    }
}

func selectCellFromPoint(point:CGPoint) {
    if let indexPath = tableView.indexPathForRow(at: point) {
        tableView.selectRow(at: indexPath, animated: true, scrollPosition: .none)
    }
}