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 列表中的行进行重新排序?

SwiftUI 按钮作为 EditButton

SwiftUI - 如何在编辑模式下避免列表中的行缩进,但不使用 onDelete? (附代码/视频)

如何从 SwiftUI 的详细信息视图(编辑项目视图)中删除核心数据条目?

如何更改 SwiftUI 列表中文本数量的最大限制?