SwipCellKit swift 5 - невозможно провести пальцем, чтобы запустить меню удаления
Я использую Xcode 11.2 и Swift 5 с последней версией SwipeCellKit
.
В моем коде есть UITableView
с ячейками в нем. Я хочу добавить действие смахивания справа, которое позволит мне использовать два действия: удаление и редактирование.
На данный момент я пробую только действие удаления. Однако свайп, похоже, не работает, я вообще никаких действий не получаю.
Что мне здесь не хватает?
Вот мой код:
КорзинаТаблица ViewCell
import UIKit
import SwipeCellKit
class CartTableViewCell: SwipeTableViewCell
{
@IBOutlet weak var mainView: UIView!
@IBOutlet weak var productName: UILabel!
@IBOutlet weak var productImage: UIImageView!
@IBOutlet weak var priceForKg: UILabel!
@IBOutlet weak var quantity: UITextField!
@IBOutlet weak var subTotal: UITextField!
override func awakeFromNib()
{
super.awakeFromNib()
self.layer.borderWidth = 1
self.layer.cornerRadius = 25
self.layer.borderColor = self.layer.backgroundColor
self.mainView.layer.borderWidth = 1
self.mainView.layer.cornerRadius = 25
self.mainView.layer.borderColor = self.mainView.layer.backgroundColor
self.quantity.layer.borderWidth = 1
self.quantity.layer.borderColor = #colorLiteral(red: 0.8078431487, green: 0.02745098062, blue: 0.3333333433, alpha: 1)
self.quantity.layer.cornerRadius = 5
self.subTotal.layer.borderWidth = 1
self.subTotal.layer.borderColor = #colorLiteral(red: 0.8078431487, green: 0.02745098062, blue: 0.3333333433, alpha: 1)
self.subTotal.layer.cornerRadius = 5
}
override var frame: CGRect {
get {
return super.frame
}
set (newFrame) {
var frame = newFrame
frame.origin.y += 4
frame.size.height -= 2 * 5
super.frame = frame
}
}
override func setSelected(_ selected: Bool, animated: Bool)
{
super.setSelected(selected, animated: animated)
}
}
CartViewController
import UIKit
import SwipeCellKit
class CartViewController: UIViewController
{
@IBOutlet weak var cartTableView: UITableView!
var listOfProducts : [Product] = []
override func viewDidLoad()
{
super.viewDidLoad()
self.cartTableView.delegate = self
self.cartTableView.dataSource = self
self.cartTableView.separatorStyle = .none
self.cartTableView.allowsSelection = false
self.cartTableView.backgroundColor = #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1)
self.subTotalView.layer.borderWidth = 1
self.subTotalView.layer.borderColor = self.subTotalView.layer.backgroundColor
self.subTotalView.layer.cornerRadius = 10
let cellNib = UINib(nibName: "CartTableViewCell", bundle: nil)
self.cartTableView.register(cellNib, forCellReuseIdentifier: "cartProductCell")
}
}
extension CartViewController : UITableViewDelegate, UITableViewDataSource, SwipeTableViewCellDelegate
{
func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath, for orientation: SwipeActionsOrientation) -> [SwipeAction]?
{
guard orientation == .right else { return nil }
let deleteAction = SwipeAction(style: .destructive, title: "Delete")
{
action, indexPath in
// handle action by updating model with deletion
}
// customize the action appearance
deleteAction.image = UIImage(named: "Delete")
return [deleteAction]
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return listOfProducts.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
let cell = tableView.dequeueReusableCell(withIdentifier: "cartProductCell", for: indexPath) as! CartTableViewCell
return cell
}
}
1 ответ
Я нашел ответ, если кто-то из вас, ребята, его ищет, недостающая строка - установить делегата ячейки перед его возвратом:
cell.delegate = self
Как упоминалось в этом сообщении: SwipeCellKit Swipe to delete не вызывается