gpt4 book ai didi

ios - 如何向右滑动隐藏 UITableView 中的删除按钮?

转载 作者:行者123 更新时间:2023-11-28 06:04:50 24 4
gpt4 key购买 nike

当您在表格 View 单元格上向左滑动时,我的 UITableView 会显示“删除”按钮。我想通过在同一单元格上向右滑动来隐藏此按钮。它也应该是粘性的,以便在我向右滑动时隐藏起来——就像它在向左滑动时显示“删除”按钮一样。现在,当我向左滑动以显示删除按钮时,我只能在滚动表格 View 时将其隐藏。有没有内置的方法来实现这种向右滑动隐藏的行为?或者这是否需要定制解决方案?

编辑:我认为默认的消息应用程序有这种行为,但我意识到当我向右滑动时,我稍微滚动了 tableview,这导致它隐藏了。现在隐藏的唯一方法是点击单元格或滚动表格 View

我已经通过实现以下方法将我的 tableView 设置为显示删除按钮:

override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == .delete {
print("deleted!")
}
}

最佳答案

是的,我在尝试允许用户滑动删除“删除”选项时也遇到了问题。 (类似于 Apple 的邮件应用程序的工作方式)

我发现它按预期工作的唯一方法是,如果您还包含一个 leadingSwipeAction...(如果用户最初向右或向左滑动,他们会得到不同的选项)。添加另一面后,用户可以轻扫删除。

顺便说一下,“Swipe the Delete Away”听起来像是一首很酷的 emo 歌曲。

这是我目前拥有的几乎可以完美运行的代码。偶尔会出现图形异常,前导按钮会跳到右侧,但我认为这可能是由于我认为是其他一些代码造成的。此代码大量借自 https://chariotsolutions.com/blog/post/uitableview-swipe-actions-in-ios-11/

    override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {

if indexPath.section == Slider.Section.results.rawValue {
return true
} else {
return false
}

}

override func tableView(_ tableView: UITableView,
leadingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration?
{

let favoriteAction = self.contextualToggleFavoriteAction(forRowAtIndexPath: indexPath)

return UISwipeActionsConfiguration(actions: [favoriteAction])

}

override func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {


let delete = UIContextualAction(style: .destructive,
title: "Delete") { (contextAction: UIContextualAction, sourceView: UIView, completionHandler: (Bool) -> Void) in

Filter.allMarkers.remove(at: indexPath.row)
tableView.deleteRows(at: [indexPath], with: .fade)
completionHandler(true)

}

let share = UIContextualAction(style: .normal,
title: "Share") { (contextAction: UIContextualAction, sourceView: UIView, completionHandler: (Bool) -> Void) in

print("About to share -> \(Filter.allMarkers[indexPath.row].title ?? "")")
completionHandler(true)

}

share.backgroundColor = Color.ocean

let swipeConfig = UISwipeActionsConfiguration(actions: [delete, share])
return swipeConfig
}


func contextualToggleFavoriteAction(forRowAtIndexPath indexPath: IndexPath) -> UIContextualAction {

let marker = Filter.allMarkers[indexPath.row]
let action = UIContextualAction(style: .normal,
title: "Favorite") { (contextAction: UIContextualAction, sourceView: UIView, completionHandler: (Bool) -> Void) in
if marker.toggleFavoriteFlag() {
completionHandler(true)
} else {
completionHandler(false)
}
}

//action.image = UIImage(named: "flag")
action.backgroundColor = marker.isFavorite ? Color.magenta : UIColor.gray
return action
}

关于ios - 如何向右滑动隐藏 UITableView 中的删除按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48549830/

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