サンプルアプリ
機能
Toggle Switchのある側のAlertを表示します。
Alert複数使い分け
表示されないコード
「Show Alert 2」は表示されます。
「Show Alert 1」は無反応です。
import SwiftUI
struct ContentView: View {
@State var showAlert = false
@State var showAlert1 = false
@State var showAlert2 = false
var body: some View {
VStack {
HStack {
Text("Alert 1")
Toggle(isOn: $showAlert) {
EmptyView()
}
.labelsHidden()
Text("Alert 2")
}
Button(action: {
if self.showAlert == false {
self.showAlert1.toggle()
}
else {
self.showAlert2.toggle()
}
}) {
Text("Show Alert")
}
.alert(isPresented: $showAlert1) {
Alert(title: Text("Show Alert 1"))
}
.alert(isPresented: $showAlert2) {
Alert(title: Text("Show Alert 2"))
}
}
.padding(8.0)
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
表示されるコード
import SwiftUI
struct ContentView: View {
@State var showAlert = false
@State var showAlert1and2 = false
var body: some View {
VStack {
HStack {
Text("Alert 1")
Toggle(isOn: $showAlert) {
EmptyView()
}
.labelsHidden()
Text("Alert 2")
}
Button(action: {
self.showAlert1and2.toggle()
}) {
Text("Show Alert")
}
.alert(isPresented: $showAlert1and2) {
switch(showAlert) {
case false:
return Alert(title: Text("Show Alert 1"))
case true:
return Alert(title: Text("Show Alert 2"))
}
}
}
.padding(8.0)
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
表示されるコード(Toggleがなかった場合)
import SwiftUI
struct ContentView: View {
@State var showAlert = false
@State var showAlert1and2 = false
@State var alert = 1
var body: some View {
VStack {
HStack {
Text("Alert 1")
Toggle(isOn: $showAlert) {
EmptyView()
}
.labelsHidden()
Text("Alert 2")
}
Button(action: {
switch(self.showAlert) {
case false:
self.alert = 1
case true:
self.alert = 2
}
self.showAlert1and2.toggle()
}) {
Text("Show Alert")
}
.alert(isPresented: $showAlert1and2) {
switch(alert) {
case 1:
return Alert(title: Text("Show Alert 1"))
case 2:
return Alert(title: Text("Show Alert 2"))
default:
return Alert(title: Text("Error"))
}
}
}
.padding(8.0)
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}