Eu tenho a visualização principal chamada TaskManagementView com lista aqui, se eu clicar em taskCell > RoundedRectangle
como mostrar o PopupView para essa célula data.id
no TaskManagementView
assim eu preciso:
código: com este código se eu tocar em taskCell > RoundedRectangle
PopupView aparecendo ao lado de todas as células. como consertar e conseguir o/p como na tela acima
struct TaskManagementView: View {
@Environment(\.dismiss) var dismiss
@StateObject private var viewModel = TaskManagementViewModel()
@State private var isComposeViewShown = false
var body: some View {
ZStack {
VStack(spacing: 0) {
VStack {
List {
ForEach(0..<viewModel.arrData.count, id: \.self) { i in
let data = viewModel.arrData[i]
Section {
if data.isExpanded {
ForEach(0..<data.items.count, id: \.self) { j in
taskCell(data: data.items[j])
.onTapGesture {
gotoTaskDetails = true
}
}
}
}
}
}
}
}
.onAppear {
viewModel.fetchTasks(filterId: selectedFilterId) { status in
}
}
}
}
@ViewBuilder func taskCell(data: TaskManagementData) -> some View {
HStack(spacing: 16) {
RoundedRectangle(cornerRadius: 2)
.frame(width: 12, height: 12)
.foregroundStyle(Color.orange)
.onTapGesture {
print("testing data id... \(data.id)")
isComposeViewShown.toggle()
}
if isComposeViewShown {
PopupView(isComposeViewShown: $isComposeViewShown)
}
VStack(alignment: .leading, spacing: 2) {
Text(data.taskTitle ?? "")
.lineLimit(1)
}
}
}
}
struct PopupView: View {
@Binding var isComposeViewShown: Bool
var body: some View {
ZStack {
Color.black.opacity(0.5)
.edgesIgnoringSafeArea(.all)
.onTapGesture {
isComposeViewShown = false
}
//some other code of popup design
.padding(.bottom, 150)
}
}
}
mau o/p do código acima: por que PopupView aparece dentro da célula? eu preciso do PopupView no TaskManagementView
Você está colocando seu pop-up dentro do
taskCell
significado que ele será mostrado para todostaskCell
na telaVocê está colocando seu pop-up de
HStack
forma que ele seja exibido horizontalmente alinhado com o restante do seutaskCell
conteúdo.Para corrigir isso, coloque o pop-up sobre sua visualização usando um
ZStack
Por favor, veja como usar visualizações de pilha no SwiftUI ,