SwiftUIでアラートとシートを出し分ける
SwiftUIでアラートとシートを出し分ける方法です。 TextField に入力された文字列が Double に変換できるかチェックします。 もし Double に変換できるのであればシートを表示し、もし Double に変換できないのであればアラートを表示します。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import SwiftUI | |
struct ContentView: View { | |
@State var numberString: String = "" | |
@State var showingAlert: Bool = false | |
@State var showingSheet: Bool = false | |
var body: some View { | |
VStack { | |
TextField("Input Number", text: $numberString) | |
.padding() | |
.textFieldStyle(RoundedBorderTextFieldStyle()) | |
Button(action: { | |
// Can numberString convert to Double? | |
guard Double(self.numberString) != nil else { | |
self.showingAlert = true | |
return | |
} | |
self.showingSheet = true | |
}) { | |
Text("Show Sheet") | |
} | |
} | |
.alert(isPresented: $showingAlert) { | |
Alert(title: Text("Error"), message: Text("Please Input Number"), dismissButton: .default(Text("Close"))) | |
} | |
.sheet(isPresented: $showingSheet) { | |
Text("\(self.numberString) can convert to Double") | |
} | |
} | |
} | |
struct ContentView_Previews: PreviewProvider { | |
static var previews: some View { | |
ContentView() | |
} | |
} |