アラートを表示する方法
How to show an alert
//----------------------------------- struct ContentView: View { @State private var showingAlert = false var body: some View { Button(action: { self.showingAlert = true }) { Text("Show Alert") } .alert(isPresented: $showingAlert) { Alert(title: Text("Important message"), message: Text("Wear sunscreen"), dismissButton: .default(Text("Got it!"))) } } } //-----------------------------------
1つのビューに複数のアラートを表示する方法
How to show multiple alerts in a single view
struct ContentView: View { @State private var showingAlert1 = false @State private var showingAlert2 = false var body: some View { VStack { Button("Show 1") { self.showingAlert1 = true } .alert(isPresented: $showingAlert1) { Alert(title: Text("One"), message: nil, dismissButton: .cancel()) } Button("Show 2") { self.showingAlert2 = true } .alert(isPresented: $showingAlert2) { Alert(title: Text("Two"), message: nil, dismissButton: .cancel()) } } } }
How to add actions to alert buttons
//----------------------------------- struct ContentView: View { @State private var showingAlert = false var body: some View { Button(action: { self.showingAlert = true }) { Text("Show Alert") } .alert(isPresented:$showingAlert) { Alert(title: Text("Are you sure you want to delete this?"), message: Text("There is no undo"), primaryButton: .destructive(Text("Delete")) { print("Deleting...") }, secondaryButton: .cancel()) } } } //-----------------------------------
アクションシートの表示方法
How to show an action sheet
struct ContentView: View { @State private var showingSheet = false var body: some View { Button(action: { self.showingSheet = true }) { Text("Show Action Sheet") } .actionSheet(isPresented: $showingSheet) { ActionSheet(title: Text("What do you want to do?"), message: Text("There's only one choice..."), buttons: [.default(Text("Dismiss Action Sheet"))]) } } }
コンテキストメニューの表示方法
How to show a context menu
//----------------------------------- struct ContentView: View { var body: some View { Text("Options") .contextMenu { Button(action: { // change country setting }) { Text("Choose Country") Image(systemName: "globe") } Button(action: { // enable geolocation }) { Text("Detect Location") Image(systemName: "location.circle") } Button(action: { // enable geolocation }) { Text("Detect Location") Image(systemName: "location.circle") } } } }//-----------------------------------
fullScreenCover()を使用してフルスクリーンのモーダルビューを表示する方法
How to present a full screen modal view using fullScreenCover()
iOS14の新機能
//----------------------------------- struct FullScreenModalView: View { @Environment(\.presentationMode) var presentationMode var body: some View { VStack { Text("This is a modal view") } .frame(maxWidth: .infinity, maxHeight: .infinity) .background(Color.red) .edgesIgnoringSafeArea(.all) .onTapGesture { presentationMode.wrappedValue.dismiss() } } } //----------------------------------- struct ContentView: View { @State private var isPresented = false var body: some View { Button("Present!") { self.isPresented.toggle() } .fullScreenCover(isPresented: $isPresented, content: FullScreenModalView.init) } } //-----------------------------------
関連サイト リンク
Display Modal View with SwiftUI
appStoreOverlay()を使用して別のアプリを推奨する方法
How to recommend another app using appStoreOverlay()
import SwiftUI import StoreKit // 追加 //----------------------------------- struct ContentView: View { @State private var showRecommended = false var body: some View { Button("Show Recommended App") { self.showRecommended.toggle() } .appStoreOverlay(isPresented: $showRecommended) { SKOverlay.AppConfiguration(appIdentifier: "1433151795", position: .bottom) } } } //-----------------------------------
ボタンを押したときにメニューを表示する方法
How to show a menu when a button is pressed
iOS14の新機能
ボタンからポップアップメニューを表示するための専用ビューを提供します。(Menu)
//----------------------------------- struct ContentView: View { var body: some View { NavigationView { Text("Hello, World!").padding() .navigationTitle("SwiftUI") .toolbar { ToolbarItem(placement: .bottomBar) { Menu("Options") { Button("Press Me") { print("Pressed") } Menu("Advanced") { Button("Press Me") { print("Pressed") } Button("Press Me") { print("Pressed") } } } } } } } } //-----------------------------------