前提・実現したいこと
ボタンを押すとアラートが表示され、"アルバムから写真を選択"をタップすると
写真選択の画面に移行し、写真の選択後、画面に写真が表示される様なものを作成しようと思っております。
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です。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。