gpt4 book ai didi

swift - trailingSwipeActions 和旋转问题

转载 作者:可可西里 更新时间:2023-11-01 01:58:56 26 4
gpt4 key购买 nike

我尝试实现新方法 trailingSwipeActionsForRowAtleadingSwipeActionsConfigurationForRowAt 来显示带有图标的行操作...

不幸的是,当我在拖尾滑动后将设备从横向旋转到纵向时,我遇到了一个奇怪的错误。

这是我的代码

var tableView: UITableView!

override func viewDidLoad() {
super.viewDidLoad()

tableView = UITableView()
tableView.delegate = self
tableView.dataSource = self
tableView.register(UITableViewCell.self, forCellReuseIdentifier: "Cell")
tableView.estimatedRowHeight = 100

view.addSubview(tableView)

tableView.translatesAutoresizingMaskIntoConstraints = false
tableView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
tableView.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true
tableView.rightAnchor.constraint(equalTo: view.rightAnchor).isActive = true
tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true

}

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

func numberOfSections(in tableView: UITableView) -> Int {
return 1
}


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

let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as UITableViewCell
cell.textLabel?.text = "\(indexPath.row)"
cell.detailTextLabel?.text = "\(indexPath.row)"
cell.backgroundColor = .lightGray

return cell
}

func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
return true
}

@available(iOS 11.0, *)
func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration?
{
let deleteAction = UIContextualAction(style: .normal, title: "") { (action, view, handler) in
print("Delete Action Tapped")

}
deleteAction.backgroundColor = .red
deleteAction.image = UIImage(named: "icons8-info-50")


let defaultAction = UIContextualAction(style: .normal, title: nil) { (action, view, handler) in
print("default Action Tapped")
}

defaultAction.backgroundColor = .orange
defaultAction.image = UIImage(named: "icons8-info-50")

let swipeAction = UISwipeActionsConfiguration(actions: [deleteAction, defaultAction])
swipeAction.performsFirstActionWithFullSwipe = false
return swipeAction
}

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 100
}

@available(iOS 11.0, *)
func tableView(_ tableView: UITableView, leadingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {

let deleteAction = UIContextualAction(style: .normal, title: "") { (action, view, handler) in
print("Delete Action Tapped")
}
deleteAction.backgroundColor = .blue
deleteAction.image = UIImage(named: "icons8-info-50")

let swipeAction = UISwipeActionsConfiguration(actions: [deleteAction])
swipeAction.performsFirstActionWithFullSwipe = false
return swipeAction
}

横向模式: enter image description here

然后切换到纵向模式: enter image description here

有什么想法吗?

谢谢

最佳答案

参见 this question .

您可以重置单元格的编辑状态,以便在 viewWillTransition(to:with:) 中使用 setEditing(_:animated:) 不再显示操作,当设备旋转时调用。

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransition(to: size, with: coordinator)

tableView.setEditing(false, animated: true)
}

这仅在您调用 setEditing(_:animated:) 外部 协调器的 animate 方法时有效。在 animation block 中将 editing 设置为 false 将无效。

关于swift - trailingSwipeActions 和旋转问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48153346/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com