попробуйте это:
... но тогда сообщение никогда не исчезнет, потому что вы никогда не установите значения переключателя обратно на 2 ... так что это то, что вам еще нужно сделать. и, возможно, вам следует выполнить проверку внутри действия переключения, а не при построении представления.
struct ContentView: View {
@State private var isCheckeds = [false, true, true, false, false, false]
@State var showAlert = false
var body: some View {
let numberOfTrue = isCheckeds.filter{$0}.count
OperationQueue.main.addOperation {
self.showAlert = numberOfTrue > 2
}
return VStack {
ForEach(0 ..< isCheckeds.count) { id in
Toggle("Switch \(id)", isOn: self.$isCheckeds[id])
.alert(isPresented: self.$showAlert) {
Alert(title: Text("Maximum Limit!"), message: Text("Maximum limit is: 3"), dismissButton: .default(Text("Got it")))
}
}
}
}
}