gpt4 book ai didi

ios - 显示在 TableView 部分标题顶部的编辑行操作

转载 作者:搜寻专家 更新时间:2023-10-31 22:24:59 25 4
gpt4 key购买 nike

在 iOS 11 上,如果 TableView 样式设置为普通(未分组)。这似乎是默认功能,如果这是一个系统错误或者我的实现可能是错误的,我正在徘徊。

我实现了一个演示应用程序,使用默认 TableView 实现 以及标题和编辑操作行的以下函数:

页眉标题:

override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return "Section \(section)"
}

编辑行的操作:

override func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
let firstAction = UITableViewRowAction(style: .normal, title: "Action1", handler: {_,_ in })
let secondAction = UITableViewRowAction(style: .destructive, title: "Action2", handler: {_,_ in })
return [firstAction, secondAction]
}

拖尾滑动 Action (新实现仅适用于 iOS 11):

override func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
let action1 = UIContextualAction(style: .normal, title: "Action1", handler: {_,_,_ in })
let action2 = UIContextualAction(style: .destructive, title: "Action2", handler: {_,_,_ in })
return UISwipeActionsConfiguration(actions: [action1, action2])
}

这是编辑操作如何显示的屏幕截图: Edit action overlapping section header

这只发生在 iOS 11 上。我尝试交替使用上面提到的两种方法,但我得到了相同的结果。

您是否知道我如何能够解决此问题?这是 iOS 11 系统错误吗?

最佳答案

对于遇到此问题的任何人,我找到了一种解决方法,方法是子类化 UITableViewHeaderFooterView 类,然后设置 layer's zPostion到 1 这将更改标题在窗口 View 渲染中的 View 顺序,这为我解决了这个问题。

解决方案一:

open class HeaderFooterView: UITableViewHeaderFooterView {

public override init(reuseIdentifier: String?) {
super.init(reuseIdentifier: reuseIdentifier)

if #available(iOS 11.0, *) {
self.layer.zPosition = 1;
}
}
}

如果您不想子类化 UITableViewHeaderFooterView 类,替代解决方法是重写 viewForHeaderInSection 委托(delegate)方法,然后在返回之前设置 View 的 zPosition。

解决方案 2:

override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let headerView = tableView.dequeueReusableHeaderFooterView(withIdentifier: "CustomHeader") as! CustomHeader

headerView.title = "Header title"

if #available(iOS 11.0, *) {
headerView.layer.zPosition = 1;
}

return headerView
}

关于ios - 显示在 TableView 部分标题顶部的编辑行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51378711/

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