簡體   English   中英

SwiftUI 列出多個自定義行編輯選項

[英]SwiftUI list multiple custom row edit option

我需要 SwiftUI 列表的多行編輯選項

  1. 我在 NavigationView 中的登錄屏幕
  2. 登錄后主屏幕是標簽欄
  3. 選項卡之一是列表視圖(我需要此列表的編輯選項)

這是我的總代碼

第一個屏幕我只有帶有文本字段和按鈕的簡單導航視圖。

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)
    }
    
    
}

也保持簡單的行后,編輯不起作用

EditButton自動跟蹤編輯模式,因此只需刪除顯式 state 和所有工作(在復制代碼上,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())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM