Eu tenho esse ContentView com duas visualizações modais diferentes, então estou usando sheet(isPresented:)
para ambas, mas, como parece, apenas a última é apresentada. Como eu poderia resolver esse problema? Ou não é possível usar várias folhas em uma exibição no SwiftUI?
struct ContentView: View {
@State private var firstIsPresented = false
@State private var secondIsPresented = false
var body: some View {
NavigationView {
VStack(spacing: 20) {
Button("First modal view") {
self.firstIsPresented.toggle()
}
Button ("Second modal view") {
self.secondIsPresented.toggle()
}
}
.navigationBarTitle(Text("Multiple modal view problem"), displayMode: .inline)
.sheet(isPresented: $firstIsPresented) {
Text("First modal view")
}
.sheet(isPresented: $secondIsPresented) {
Text("Only the second modal view works!")
}
}
}
}
O código acima é compilado sem avisos (Xcode 11.2.1).
swift
modal-dialog
swiftui
testado
fonte
fonte
Respostas:
Por favor, tente o código abaixo
fonte
Seu caso pode ser resolvido da seguinte forma (testado com o Xcode 11.2)
fonte
Também pode adicionar a planilha a um EmptyView colocado no plano de fundo da visualização. Isso pode ser feito várias vezes:
fonte
Você pode fazer isso simplesmente agrupando o botão e a chamada .sheet. Se você tem um líder e outro à frente, é simples assim. No entanto, se você tiver vários itens de navegação no início ou no final, precisará agrupá-los em um HStack e também agrupar cada botão com sua chamada de planilha em um VStack.
Aqui está um exemplo de dois botões à direita:
fonte
Além da resposta de Rohit Makwana , eu encontrei uma maneira de extrair o conteúdo da planilha para uma função porque o compilador estava com dificuldades para verificar meu gigantesco
View
.Você pode usá-lo desta maneira:
Isso torna o código mais limpo e também alivia o estresse do seu compilador.
fonte