swift初学者です。swiftでたった2日でマスターできるiPhoneアプリ開発集中講座という書籍を参考に、カメラアプリを作っていると、"Cannot infer contextual base in reference to member 'actionSheet' "とエラーが出てしまいました。
誰かこのエラーの解決策を教えてください。
エラーメッセージ
Cannot infer contextual base in reference to member 'actionSheet'
該当のソースコード
swift
1// 2// ContentView.swift 3// MyCamera 4// 5// Created by on 2022/09/13. 6// 7 8import SwiftUI 9 10struct ContentView: View { 11 //撮影した写真を保持する状態変数 12 @State var captureImage: UIImage? = nil 13 //撮影画面(sheet)の開閉状態を管理 14 @State var isShowSheet = false 15 //シェア画面の(sheet)の開閉状態を管理 16 @State var isShowActivity = false 17 //フォトライブラリーかカメラかを保持する状態変数 18 @State var isPhotolibrary = false 19 //選択画面(ActionSheet)のsheet開閉状態を管理 20 @State var isShowAction = false 21 22 var body: some View { 23 //縦方向にレイアウト 24 VStack { 25 //スペースを追加 26 Spacer() 27 //撮影した写真がある時 28 if let unwrapCaptureImage = captureImage { 29 //撮影写真を表示 30 Image(uiImage: unwrapCaptureImage) 31 //リサイズ 32 .resizable() 33 //アスペクト比(縦横比)を維持して画面内に 34 .aspectRatio(contentMode: .fit) 35 } 36 37 //スペースを追加 38 Spacer() 39 //カメラを起動するボタン 40 Button(action: { 41 //ボタンをタップした時のアクション 42 //ActionSheetを表示する 43 isShowAction = true 44 }) { 45 46 //状態変数:$isShowSctionに変化があったら実行 47 .actionSheet(isPresented: $isShowAction) { //エラー発生 48 //ActionSheetを表示する 49 ActionSheet(title: Text("確認"), 50 message: Text("選択してください"), 51 buttons: [ 52 .default(Text("カメラ"), action: { 53 //フォトライブラリーを選択 54 isPhotolibrary = false 55 //カメラが利用可能かチェック 56 if UIImagePickerController.isSourceTypeAvailable(.camera){ 57 print("カメラは利用できます") 58 //カメラが使えるなら、isShowSheetをtrue 59 isShowSheet = true 60 } else { 61 print("カメラは利用できません") 62 } 63 }), 64 .default(Text("フォトライブラリー"), action: { 65 //フォトライブラリーを選択 66 isPhotolibrary = true 67 //isShowSheetをtrue 68 isShowSheet = true 69 }), 70 //キャンセル 71 .cancel(), 72 ])//ActionSheetここまで 73 }//.actionsheetここまで 74 //テキストを表示 75 Text("カメラを起動する") 76 //横幅いっぱい 77 .frame(maxWidth: .infinity) 78 //高さ50ポイントを指定 79 .frame(height: 50) 80 //文字列をセンタリングに指定 81 .multilineTextAlignment(.center) 82 //背景を青色に指定 83 .background(Color.blue) 84 //文字色を白色に指定 85 .foregroundColor(Color.white) 86 }//「カメラを起動する」ボタンここまで 87 //上下左右に余白を追加 88 .padding() 89 //sheetを表示 90 //isPresentedで指定した状態変数がtrueの時実行 91 .sheet(isPresented: $isShowSheet) { 92 //フォトライブラリーが選択された 93 if isPhotolibrary { 94 //PHPickerViewController(フォトライブラリー)を表示 95 PHPickerView( 96 isShowSheet: $isShowSheet, 97 captureImage: $captureImage) 98 } else { 99 //UIImagePickerController(写真撮影)を表示 100 ImagePickerView( 101 isShowSheet: $isShowSheet, 102 captureImage: $captureImage) 103 } 104 }//「カメラを起動する」ボタンのsheetここまで 105 //「SNSに投稿する」ボタン 106 Button(action: { 107 //ボタンをタップした時のアクション 108 //撮影した写真があるときだけ 109 //UIActibityViewController(シェア機能)を表示 110 if let _ = captureImage { 111 isShowSheet = true 112 } 113 }) { 114 Text("SNSに投稿する") 115 //横幅いっぱい 116 .frame(maxWidth: .infinity) 117 //高さ50ポイントを指定 118 .frame(height: 50) 119 //文字列をセンタリング指定 120 .multilineTextAlignment(.center) 121 //背景を青色に指定 122 .background(Color.blue) 123 //文字色を白色に指定 124 .foregroundColor(Color.white) 125 }//「SNSに投稿する」ボタンここまで 126 //上下左右に余白を追加 127 .padding() 128 //sheetを表示 129 //isPresentedで指定した状態変数がtrueのとき実行 130 .sheet(isPresented: $isShowActivity) { 131 //UIActivityViewController(シェア機能)を表示 132 ActivityView(shareItems: [captureImage!]) 133 } 134 135 }//VStackここまで 136 }//bodyここまで 137 }//ContentViewここまで 138 139 struct ContentView_Previews: PreviewProvider { 140 static var previews: some View { 141 ContentView() 142 } 143 } 144 145
補足情報
Xcodeのバージョンは14.0
機種はMacBook Pro バージョンは12.5.1です。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/09/21 11:34