質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

解決済

swiftで"Cannot infer contextual base in reference to member 'actionSheet' "とエラーが出てしまいました。

atomu__
atomu__

総合スコア2

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

1回答

0リアクション

0クリップ

230閲覧

投稿2022/09/20 12:34

swift初学者です。swiftでたった2日でマスターできるiPhoneアプリ開発集中講座という書籍を参考に、カメラアプリを作っていると、"Cannot infer contextual base in reference to member 'actionSheet' "とエラーが出てしまいました。
誰かこのエラーの解決策を教えてください。

エラーメッセージ

Cannot infer contextual base in reference to member 'actionSheet'

該当のソースコード

swift

// // ContentView.swift // MyCamera // // Created by on 2022/09/13. // import SwiftUI struct ContentView: View { //撮影した写真を保持する状態変数 @State var captureImage: UIImage? = nil //撮影画面(sheet)の開閉状態を管理 @State var isShowSheet = false //シェア画面の(sheet)の開閉状態を管理 @State var isShowActivity = false //フォトライブラリーかカメラかを保持する状態変数 @State var isPhotolibrary = false //選択画面(ActionSheet)のsheet開閉状態を管理 @State var isShowAction = false var body: some View { //縦方向にレイアウト VStack { //スペースを追加 Spacer() //撮影した写真がある時 if let unwrapCaptureImage = captureImage { //撮影写真を表示 Image(uiImage: unwrapCaptureImage) //リサイズ .resizable() //アスペクト比(縦横比)を維持して画面内に .aspectRatio(contentMode: .fit) } //スペースを追加 Spacer() //カメラを起動するボタン Button(action: { //ボタンをタップした時のアクション //ActionSheetを表示する isShowAction = true }) { //状態変数:$isShowSctionに変化があったら実行 .actionSheet(isPresented: $isShowAction) {  //エラー発生 //ActionSheetを表示する ActionSheet(title: Text("確認"), message: Text("選択してください"), buttons: [ .default(Text("カメラ"), action: { //フォトライブラリーを選択 isPhotolibrary = false //カメラが利用可能かチェック if UIImagePickerController.isSourceTypeAvailable(.camera){ print("カメラは利用できます") //カメラが使えるなら、isShowSheetをtrue isShowSheet = true } else { print("カメラは利用できません") } }), .default(Text("フォトライブラリー"), action: { //フォトライブラリーを選択 isPhotolibrary = true //isShowSheetをtrue isShowSheet = true }), //キャンセル .cancel(), ])//ActionSheetここまで }//.actionsheetここまで //テキストを表示 Text("カメラを起動する") //横幅いっぱい .frame(maxWidth: .infinity) //高さ50ポイントを指定 .frame(height: 50) //文字列をセンタリングに指定 .multilineTextAlignment(.center) //背景を青色に指定 .background(Color.blue) //文字色を白色に指定 .foregroundColor(Color.white) }//「カメラを起動する」ボタンここまで //上下左右に余白を追加 .padding() //sheetを表示 //isPresentedで指定した状態変数がtrueの時実行 .sheet(isPresented: $isShowSheet) { //フォトライブラリーが選択された if isPhotolibrary { //PHPickerViewController(フォトライブラリー)を表示 PHPickerView( isShowSheet: $isShowSheet, captureImage: $captureImage) } else { //UIImagePickerController(写真撮影)を表示 ImagePickerView( isShowSheet: $isShowSheet, captureImage: $captureImage) } }//「カメラを起動する」ボタンのsheetここまで //「SNSに投稿する」ボタン Button(action: { //ボタンをタップした時のアクション //撮影した写真があるときだけ //UIActibityViewController(シェア機能)を表示 if let _ = captureImage { isShowSheet = true } }) { Text("SNSに投稿する") //横幅いっぱい .frame(maxWidth: .infinity) //高さ50ポイントを指定 .frame(height: 50) //文字列をセンタリング指定 .multilineTextAlignment(.center) //背景を青色に指定 .background(Color.blue) //文字色を白色に指定 .foregroundColor(Color.white) }//「SNSに投稿する」ボタンここまで //上下左右に余白を追加 .padding() //sheetを表示 //isPresentedで指定した状態変数がtrueのとき実行 .sheet(isPresented: $isShowActivity) { //UIActivityViewController(シェア機能)を表示 ActivityView(shareItems: [captureImage!]) } }//VStackここまで }//bodyここまで }//ContentViewここまで struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView() } }

補足情報

Xcodeのバージョンは14.0
機種はMacBook Pro バージョンは12.5.1です。

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています