SwiftUI 列出多个自定义行编辑选项
Posted
技术标签:
【中文标题】SwiftUI 列出多个自定义行编辑选项【英文标题】:SwiftUI list multiple custom row edit option 【发布时间】:2020-06-25 06:14:56 【问题描述】:我需要 SwiftUI 列表的多行编辑选项
-
我在 NavigationView 中的登录屏幕
登录后主屏幕是选项卡
酒吧
其中一个选项卡是列表视图(我需要为此编辑选项
列表)
这是我的总代码
第一个屏幕我只有带有文本字段和按钮的简单导航视图。
struct HomeView: View
@ObservedObject var viewModel = HomeViewModel()
//@State var title = "Home"
var body: some View
TabView(selection: $viewModel.selectedView)
TasksView()
.tabItem
Image(“one”)
Text(“one”)
.tag(0)
DashboardView()
.tabItem
Image(“two”)
Text(“two”)
.tag(1)
NotifcationsView()
.tabItem
Image(“some”)
Text(“some”)
.tag(2)
SettingsView()
.tabItem
Image(“set”)
Text("Se")
.tag(3)
.navigationBarBackButtonHidden(true)
.navigationBarItems(trailing: EditButton())
.navigationBarTitle(Text(viewModel.title) , displayMode: .inline)
struct TasksView: View
@ObservedObject var viewModel = TViewModel()
@State var segmentSelection = 0
@State var selection = Set<String>()
// @State var editMode = EditMode.active
var body: some View
VStack
Picker(selection: $viewModel.segmentSelection, label: Text(""))
ForEach(0..<self.viewModel.segments.count) index in
Text(self.viewModel.segments[index]).tag(index)
.pickerStyle(SegmentedPickerStyle())
.padding(5)
//MyTaskListView()
List (selection: $selection)
ForEach(viewModel.mt) t in
//TaskCell(t : task)
Text("Title")
.onDelete(perform: viewModel.delete)
.onAppear
self.viewModel.requestMYTasks()
.frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity, alignment: .topLeading)
init()
UISegmentedControl.appearance().selectedSegmentTintColor = Colors.navBarColor
UISegmentedControl.appearance().setTitleTextAttributes([.foregroundColor: UIColor.white], for: .selected)
UISegmentedControl.appearance().setTitleTextAttributes([.foregroundColor: Colors.navBarColor], for: .normal)
在保持简单行后,编辑也不起作用
【问题讨论】:
【参考方案1】:EditButton
自动跟踪编辑模式,因此只需删除您的显式状态和所有工作(在复制代码上,Xcode 11.4)
//@State var editMode = EditMode.active // remove this
List (selection: $selection)
ForEach(viewModel.myTasks) task in
TaskCell(task : task)
.onDelete(perform: viewModel.delete)
// .environment(\.editMode, self.$editMode) // ... and this
.navigationBarItems(trailing: EditButton())
【讨论】:
@Prathap,您提供了所有代码吗?你使用哪个 Xcode/env?正如答案中所述,它是品尝和工作的。 我只有一个带有标签栏的屏幕和带有该列表的分段控件,仍然可以正常工作,仅此列表有问题,我已将简单的 Text("title") 替换为该自定义行,即使我有同样的问题以上是关于SwiftUI 列出多个自定义行编辑选项的主要内容,如果未能解决你的问题,请参考以下文章