Перемещение внутри позиции элемента списка в SwiftUI
Я пытаюсь переместить позицию элемента списка, когда нажимаю на другой
Когда я нажимаю, вот что происходит
Мне нужно, чтобы представление двигалось вверх и оставалось таким, чтобы пользователю не нужно было его перемещать
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 ответ
Поскольку у вас есть предопределенное количество элементов, более целесообразно использовать ScrollView
вместо того List
Вот. Итак, решение может быть следующим (в псевдокоде)
Обновите полный демонстрационный код. Протестировано с Xcode 11.4 / iOS 13.4
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
}
}