Как показать список определенной строки в поле зрения?

Список в представлении ограничен отображением столбцов. Я хочу включить нужный столбец в столбцы, отображаемые в представлении.

Как мне поступить?

@State var showMyRow = false

var body: some view { 
   Vstack {
     Button(“bt”) {
          self.showMyRow.toggle()
      }
    ImageView
     ....
   List {
            ForEach
            .
            .
            . // if showMyRow is true, view show this row
    }
  }
}

На изображении выше showMyRow имеет значение false.

После действия кнопки showMyRow принимает значение true. Если showMyRow истинно, покажите мне на 7row

2 ответа

Обновленный ответ: Не уверен, что я правильно понял ваш вопрос, но если вам просто нужен список, из которого вы можете добавлять и удалять вещи, тогда проще всего будет создать отдельный файл SwiftUI, содержащий структуру для строки и класс ObservableObject, который проверяет наличие изменений.

1) Файл SwiftUI со структурой ListItem и классом ObservableObject:

import SwiftUI

struct ListItem: Identifiable {
    let id = UUID()
    let title: String
}

class Items: ObservableObject {
    @Published var rows = [ListItem]()
}

2) ContentView с вашим представлением и списком изображений: у него
также есть метод removeItems, поэтому вы можете провести любую строку, чтобы удалить ее.

struct ContentView: View {

    @ObservedObject var items = Items()

    var body: some View {
        NavigationView{
            VStack{
                Image("image")
                    .resizable()
                    .frame(width: 200, height: 200)
                    .padding(50)
                List {
                    ForEach(items.rows) { item in
                        Text(item.title)
                    }
                .onDelete(perform: removeItems)
                }
            }
        .navigationBarTitle("My List")
            .navigationBarItems(trailing: Button(action : {
                let row = ListItem(title: "New Row")
                self.items.rows.append(row)
            }) {
                Image(systemName: "plus")
            }
            )
        }
    }

    func removeItems(at offsets: IndexSet) {
        items.rows.remove(atOffsets: offsets)
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

Я предполагаю, что вы пытаетесь представить несколько столбцов по горизонтали на экране?

Если да, то вы можете поместить списки в стек.

HStack {
    List {
        Text("Hello")
    }
    List {
        Text("There")
    }
}

А если столбцов много, вы можете заключить HStack в представление с прокруткой.

var body: some View {
    ScrollView(.horizontal) {
        HStack {
            List {
                Text("column 1")
            }
            List {
                Text("column 2")
            }
            List {
                Text("column 3")
            }
            List {
                Text("column 4")
            }
        }    
            .frame(width: 1000, height: 800)
            .background(Color.red)
    }
}
Другие вопросы по тегам