SwiftUI - 列表编辑模式 - 如何更改删除按钮标题?
Posted
技术标签:
【中文标题】SwiftUI - 列表编辑模式 - 如何更改删除按钮标题?【英文标题】:SwiftUI - List editing mode - how to change delete button title? 【发布时间】:2020-01-19 18:07:15 【问题描述】:有没有办法在编辑列表时更改删除按钮的标题?
例子-
struct ContentView: View
@State private var users = ["Paul", "Taylor", "Adele"]
var body: some View
NavigationView
List
ForEach(users, id: \.self) user in
Text(user)
.onDelete(perform: delete)
.navigationBarItems(trailing: EditButton())
func delete(source: IndexSet)
【问题讨论】:
你试过使用 UIViewControllerRepresentable / UIViewRepresentable 吗? duplicate, duplicate 【参考方案1】:从 Xcode 11.3.1 开始,SwiftUI 不支持列表项的自定义滑动操作。根据 Apple SDK 发展的历史,我们可能要等到下一个主要 SDK 版本(在 WWDC 2020 上)或之后才能看到支持。
实现不同的用户界面可能会更好,例如将切换按钮添加为列表项的子视图,或向列表项添加上下文菜单。
请注意,您必须是 beta 4 或更高版本才能在 ios 上使用 contextMenu 修饰符。
看到这个 - SwiftUI - Custom Swipe Actions In List
【讨论】:
现在可以从 XCode 12.3 开始吗?【参考方案2】:如果你想在 15.0 以下采用这个,试试这个。
为此,您需要Introspect
List
ContentsView
.introspectTableView tv in
tv.delegate = viewModel
ViewModel 应该是……
final class MyCustomViewModel: NSObject, ObservableObject, UITableViewDelegate
func tableView(_ tableView: UITableView, titleForDeleteConfirmationButtonForRowAt indexPath: IndexPath) -> String?
return "Kick Out!"
【讨论】:
以上是关于SwiftUI - 列表编辑模式 - 如何更改删除按钮标题?的主要内容,如果未能解决你的问题,请参考以下文章
如何允许对不在编辑模式下的 SwiftUI 列表中的行进行重新排序?
SwiftUI - 如何在编辑模式下避免列表中的行缩进,但不使用 onDelete? (附代码/视频)