Вызвать leadSwipeActionsConfigurationForRowAt из другой функции - PullRequest
0 голосов
/ 25 сентября 2019

Необычный вопрос, у меня есть UITableViewCell, в котором есть как начальные, так и конечные действия смахивания,

Есть ли способ вызвать одно из другого?

Например, пользователь провел пальцем по ячейке ипоявилось ведущее действие, при нажатии на него появится конечное действие.

Как на прилагаемой фотографии здесь swiping actions

Когда пользователь проведет пальцем, от переднего края ячейки появится значок, после нажатия которого завершающее действие будетпоявляются с кнопкой подтверждения для удаления ячейки.

Этого можно достичь?

Вот мой код:

    func tableView(_ tableView: UITableView, leadingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
    let leadingAction = UIContextualAction(style: .normal, title: "", handler: { (leadingAction, view, completionHandler) in
        // Action here
        completionHandler(true)
    })

    if let deleteImage =  UIImage(named: "Delete")?.cgImage {
         leadingAction.image = ImageWithoutRender(cgImage: deleteImage, scale: UIScreen.main.nativeScale, orientation: .up)
    }

    let preventFullSwipe = UISwipeActionsConfiguration(actions: [leadingAction])
    preventFullSwipe.performsFirstActionWithFullSwipe = false


    leadingAction.backgroundColor = Colors.clearAlpha
    let configuration = UISwipeActionsConfiguration(actions: [leadingAction])
    return configuration
}

func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
    let trailingAction = UIContextualAction(style: .normal, title: "", handler: { (trailingAction, view, completionHandler) in
        // Action here
        completionHandler(true)
    })

    if let deleteImage =  UIImage(named: "ComfirmDelete")?.cgImage {
         trailingAction.image = ImageWithoutRender(cgImage: deleteImage, scale: UIScreen.main.nativeScale, orientation: .up)
    }

    trailingAction.backgroundColor = Colors.clearAlpha
    let configuration = UISwipeActionsConfiguration(actions: [trailingAction])
    return configuration
}

1 Ответ

0 голосов
/ 25 сентября 2019

Вы можете смоделировать жест смахивания, добавив следующие строки в блок завершения завершающего действия

let gesture = UIPanGestureRecognizer()
gesture.setTranslation(CGPointMake(0, 100), inView: youtableViewCell)
wasDragged(gesture)

дальнейшее поведение.

func wasDragged (gesture: UIPanGestureRecognizer) {        
    let translation = gesture.translationInView(youtableViewCell)
    let cell = gesture.view!

    // Move the object depending on the drag position
    cellcontentView.center = CGPoint(x: self.view.bounds.width / 2 + translation.x,
                              y:  self.view.bounds.height / 2 + translation.y)
}

Примечание: Возможно, это не идеальное решение, но вы можете заставить его работать, у вас есть руководство :) :)

...