Перемещение внутри позиции элемента списка в SwiftUI - PullRequest
0 голосов
/ 17 июня 2020

Я пытаюсь переместить позицию элемента списка, когда я нажимаю на другой

image

Когда я нажимаю, вот что происходит

image

Мне нужно, чтобы вид перемещался вверх и оставался таким, чтобы пользователю не нужно было его перемещать

image

        VStack{
            VStack{
                Button(action: {
                    self.iconeView.toggle()
                }) {
                    ZStack{
                        self.icone.renderingMode(.original)
                            .frame(width: UIScreen.main.bounds.width * 0.4, height: UIScreen.main.bounds.height * 0.2)
                    }
                }

            }//Photo
                .padding(.bottom, 54)
                .padding(.top, 42)

            List {

                VStack(alignment: .leading){
                    Text("Nome do remédio")
                }//Medicine Name
                .padding(.bottom, 10)

                VStack(alignment: .leading){
                    Text("Quantidade de remédio")
                }// Quantity
                    .padding(.bottom, 50)

                VStack(alignment: .leading){
                    Text("Horario Inicial")

                }//Start time

            }//List


        }//Screen

1 Ответ

0 голосов
/ 18 июня 2020

Поскольку у вас есть предопределенное количество элементов, здесь более целесообразно использовать ScrollView вместо List. Таким образом, решение может быть следующим (в псевдокоде)

Обновление с полным демонстрационным кодом. Протестировано с Xcode 11.4 / iOS 13.4

demo

struct DemoMoveToTopView: View {
    @State private var showMedicalName = true
    @State private var showQuantaty = true

    var body: some View {
        ScrollView {
            VStack {
            if self.showMedicalName {
                VStack(alignment: .leading){
                    Text("Nome do remédio")
                }//Medicine Name
                    .frame(width: 300, height: 100)
                    .border(Color.red).background(Color.yellow)
                    .padding(.bottom, 10)
                    .transition(.opacity)
            }

            if self.showQuantaty {
                VStack(alignment: .leading){
                    Text("Quantidade de remédio")
                }// Quantity
                    .frame(width: 300, height: 100)
                    .border(Color.red).background(Color.yellow)
                    .padding(.bottom, 50)
                    .transition(.opacity)
            }

            VStack(alignment: .leading){
                Text("Horario Inicial")

            }//Start time
                .frame(width: 300, height: 100)
                    .border(Color.red).background(Color.white)
                .onTapGesture {
                    self.showMedicalName.toggle()      // << hide/show above
                    self.showQuantaty.toggle()         // << hide/show above

                    // .. do other needed
            }

            }.animation(.default)
        }//ScrollView
    }
}
...