No código a seguir, não importa onde eu anexe o segundo, .actionSheet
não consigo fazê-lo funcionar. Meu entendimento era que, desde que estivessem ligados a pontos de vista diferentes, funcionaria, mas essa teoria não parece ser verdadeira.
struct ContentView: View {
@State private var showFirstActionSheet = false
@State private var showSecondActionSheet = false
var body: some View {
VStack{
VStack{
Button("Show Fist Action Sheet"){
showFirstActionSheet = true
}
.actionSheet(isPresented: $showFirstActionSheet) {
ActionSheet(title: Text("First Action Sheet"), message:
Text("Some message!"),
buttons: [
.destructive(Text("Cancel")){
},
.default(Text("Yes")){
doSomething()
},
.cancel()
])
}
}
}
.actionSheet(isPresented: $showSecondActionSheet) {
ActionSheet(title: Text("Second Action Sheet"), message:
Text("Some message!"),
buttons: [
.destructive(Text("Cancel")){
},
.default(Text("Yes")){
},
.cancel()
])
}
}
func doSomething(){
showSecondActionSheet = true
}
}
Tentei com dois botões diferentes e funcionou, mas no meu caso só tenho um botão que aciona o primeiro e o segundo é acionado pela primeira actionSheet.
Alguma ideia de qual seria a melhor maneira de lidar com isso?
Se você apenas alterar todos os
actionSheet
s do seu código paraconfirmationDialog
, tudo funcionará perfeitamente.actionSheet
foi descontinuado no iOS 17.Em vez de usar métodos de fábrica
Alert.Button
, você pode simplesmente criarButton
s regulares comrole
s diferentes.Se você tiver um cenário em que a segunda planilha de ações precise ser acionada pelo botão da primeira planilha de ações, você poderá modificar seu código adequadamente. Uma abordagem é usar uma variável de estado para controlar ambas as planilhas de ação e gerenciar sua apresentação sequencialmente. Aqui está um exemplo:
o botão "Sim" é tocado na primeira planilha de ações, ele define showSecondActionSheet como verdadeiro, o que aciona a apresentação da segunda planilha de ações.
Com o ajuste, você poderá controlar o fluxo das apresentações das planilhas de ação com base nas interações do usuário. Ajuste a lógica nos botões da segunda planilha de ação de acordo com seus requisitos específicos.