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

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

新規登録して質問してみよう
ただいま回答率
85.35%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

Q&A

解決済

2回答

749閲覧

iosアプリ開発。アラート表示で項目を選択した時に実行される関数の表記方法についての質問

progpen123

総合スコア3

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

0グッド

0クリップ

投稿2020/09/01 07:57

前提・実現したいこと

ボタンを押すとアラートが表示され、"アルバムから写真を選択"をタップすると
写真選択の画面に移行し、写真の選択後、画面に写真が表示される様なものを作成しようと思っております。

Void in の下にあるself.selectPicture()をうまく動作させるにはどうすればよいでしょうか?

発生している問題・エラーメッセージ

エラーメッセージ

Value of type 'FirstViewController' has no member 'selectPicture'

該当のソースコード

swift言語

1import UIKit 2 3class FirstViewController: UIViewController 4{ 5 6 @IBOutlet weak var imageview: UIImageView! 7 { 8 didSet 9 { 10 // デフォルトの画像を表示する 11 imageview.image = UIImage(named: "home.png") 12 } 13 } 14 15 override func viewDidLoad() 16 { 17 super.viewDidLoad() 18 // Do any additional setup after loading the view. 19 } 20 //ここから下は次ページのプログラム 21 @IBOutlet weak var acountImage: UIImageView! 22 { 23 didSet 24 { 25 acountImage.image = UIImage(named: "home.png") 26 } 27 } 28 29 @IBAction func showActionSheet(_ sender: Any) 30 { 31 // アクションシートを作る 32 let actionSheet = UIAlertController( 33 title: nil, 34 message: nil, 35 preferredStyle: .actionSheet 36 ) 37 38 // 写真追加 39 actionSheet.addAction( 40 UIAlertAction( 41 title: "アルバムから写真を選択", 42 style: .default, 43 handler: {(action) -> Void in 44 self.selectPicture() 45 }) 46 ) 47 48 func selectPicture() 49 { 50 // カメラロールが利用可能か? 51 if UIImagePickerController.isSourceTypeAvailable(.photoLibrary){ 52 // 写真を選ぶビュー 53 let pickerView = UIImagePickerController() 54 // 写真の選択元をカメラロールにする 55 // 「.camera」にすればカメラを起動できる 56 pickerView.sourceType = .photoLibrary 57 // デリゲート 58 pickerView.delegate = self 59 // ビューに表示 60 self.present(pickerView, animated: true) 61 } 62 } 63 64 // 写真削除ボタン 65 actionSheet.addAction( 66 UIAlertAction( 67 title: "写真を削除", 68 style: .destructive, 69 handler: {(action) -> Void in 70 self.hello(action.title!) 71 }) 72 ) 73 74 // キャンセル(追加順にかかわらず最後に表示される) 75 actionSheet.addAction( 76 UIAlertAction( 77 title: "キャンセル", 78 style: .cancel, 79 handler: nil) 80 ) 81 82 // アクションシートを表示する 83 self.present( 84 actionSheet, 85 animated: true, 86 completion: { 87 // 表示完了後に実行 88 print("アクションシートが表示された") 89 } 90 ) 91 } 92 93 94 // 選んだボタンで実行するメソッド 95 func hello(_ msg:String) { 96 print(msg) 97 } 98 99 100 101} 102extension FirstViewController: UIImagePickerControllerDelegate, UINavigationControllerDelegate { 103 // 写真を選んだ後に呼ばれる処理 104 func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { 105 // 選択した写真を取得する 106 let image = info[.originalImage] as! UIImage 107 // ビューに表示する 108 imageview.image = image 109 // 写真を選ぶビューを引っ込める 110 self.dismiss(animated: true) 111 } 112 113}

試したこと

void inの下にselfなどを使わず、直接selectPicture()の内容を書いて実行したところ
アラートの"アルバムの写真を選択"を押しても反応がありませんでした

補足情報(FW/ツールのバージョンなど)

Xcodeのバージョンは11.6です。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

self.を削除する。

投稿2020/09/02 08:00

fuzzball

総合スコア16733

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

showActionSheet 関数の中にある selectPicture 関数を外に出してください。hello関数の上くらいで大丈夫かなと思います。

投稿2020/09/02 00:07

TakuyaAso

総合スコア1361

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

progpen123

2020/09/02 05:26 編集

外に出したら無事、エラーもなくなりました。 写真選択もできるようになってました!ありがとうございました! (追記) 写真表示されてなかったのですがextentionの中の imageview の名称を変更したら表示されました
TakuyaAso

2020/09/02 06:10

良かったですー
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問