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

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

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

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

解決済

swift3 Alert カメラ起動 のエラーについて

asuuuuuuuuu7
asuuuuuuuuu7

総合スコア0

Swift

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

1回答

-1評価

0クリップ

1470閲覧

投稿2017/06/01 03:38

下記のようにシステムを組みましたが、どうしても if let image = info[UIImagePickerControllerEditedImage] {self.showAlert.image = image as? UIImage } の部分で Value of type 'UIView' has no member 'image'
というエラーが出てしまいます。原因がわかる方教えてください。
一つずつ機能のコードを入力しているので、順番がちぐはぐです、汚くてすみません。

swift3

import UIKit class manage: UIViewController , UIPickerViewDelegate, UITextFieldDelegate,UIImagePickerControllerDelegate, UINavigationControllerDelegate { ///////////☆//////////アラート表示するimageView @IBOutlet weak var showAlert: UIView! /////////////☆//////////商品名とメモのキーボード //商品名 @IBOutlet weak var textField3: UITextField! //メモ @IBOutlet weak var textField4: UITextField! ////////////☆/////////開封日の入力 //変数を宣言する //今日の日付を代入 //let nowDate = NSDate() let dateFormat = DateFormatter() let inputDatePicker = UIDatePicker() //開封日入力欄 @IBOutlet weak var textField: UITextField! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. /////////////☆////////textField2のoverride pickerView.delegate = self as? UIPickerViewDelegate pickerView.dataSource = self as? UIPickerViewDataSource pickerView.showsSelectionIndicator = true let toolbar = UIToolbar(frame: CGRectMake(0, 0, 0, 35)) let doneItem = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(manage.done)) //let cancelItem = UIBarButtonItem(barButtonSystemItem: .cancel, target: self, action: #selector(manage.cancel)) //toolbar.setItems([cancelItem, doneItem], animated: true) toolbar.setItems([doneItem], animated: true) self.textField2.inputView = pickerView self.textField2.inputAccessoryView = toolbar /////////////////////// /////////////☆//////////画像をタップするとアラートを表示 let myTap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(manage.changeColor(_ :))) // イベントが入ったUITapGestureRecognizerをインスタンス化 self.showAlert.isUserInteractionEnabled = true // タップを検知することができるようにする self.showAlert.addGestureRecognizer(myTap) /////////////////////// // Do any additional setup after loading the view, typically from a nib. //日付フィールドの設定 dateFormat.dateFormat = "yyyy年MM月dd日" //textField.text = dateFormat.string(for: nowDate as Date) self.textField.delegate = self as? UITextFieldDelegate // DatePickerの設定(日付用) inputDatePicker.datePickerMode = UIDatePickerMode.date textField.inputView = inputDatePicker // キーボードに表示するツールバーの表示 let pickerToolBar = UIToolbar(frame: CGRect(x: 0, y: 0, width: 320, height: 40)) pickerToolBar.layer.position = CGPoint(x: self.view.frame.size.width/2, y: self.view.frame.size.height-20.0) pickerToolBar.barStyle = .blackTranslucent pickerToolBar.tintColor = UIColor.white pickerToolBar.backgroundColor = UIColor.black //閉じるボタンのツールバー生成 //ボタンの設定 // 閉じるボタン let kbToolBar = UIToolbar(frame: CGRect(x: 0, y: 0, width: 320, height: 40)) kbToolBar.barStyle = UIBarStyle.default // スタイルを設定 kbToolBar.sizeToFit() // 画面幅に合わせてサイズを変更 // スペーサー let spacer = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace, target: self, action: nil) let commitButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.done, target: self, action: #selector(manage.commitButtonTapped)) kbToolBar.items = [spacer, commitButton] //textField.inputView = pickerToolBar textField.inputAccessoryView = kbToolBar /////////////☆//////////商品名とメモのキーボードを閉じる // キーボードを閉じる(商品名) // Delegateを設定(Stroyboardで結んでも可) textField3.delegate = self // キーボードを閉じる(メモ) textField4.delegate = self }////////////////////////////////////////////viewDidLoadの終了☆☆☆ /////////////☆//////////商品名とメモのキーボードを閉じるの続き // returnボタン押下で閉じる場合 func textFieldShouldReturn(_ textField: UITextField) -> Bool { textField.resignFirstResponder() return true } // 画面タップで閉じる場合 //override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { //view.endEditing(true) //} ///////////☆/////////開封日の入力の続き //閉じるボタンが押されたらキーボードを閉じる func commitButtonTapped (){ let pickerDate = inputDatePicker.date textField.text = dateFormat.string(from: pickerDate) self.view.endEditing(true) } ///////////☆///////////ジャンルの選択 @IBOutlet weak var textField2: UITextField! var pickerView: UIPickerView = UIPickerView() let list = ["", "1", "2", "3", "4"] func numberOfComponents(in pickerView: UIPickerView) -> Int { return 1 } func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { return list.count } func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { return list[row] } func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { self.textField2.text = list[row] } func done() { self.textField2.endEditing(true) } func CGRectMake(_ x: CGFloat, _ y: CGFloat, _ width: CGFloat, _ height: CGFloat) -> CGRect { return CGRect(x: x, y: y, width: width, height: height) } //Alertの設定2 func changeColor(_ sender: UITapGestureRecognizer) {selectImage()} func selectImage() { let alertController = UIAlertController(title: "画像を選択", message: nil, preferredStyle: .actionSheet) let cameraAction = UIAlertAction(title: "カメラを起動", style: .default) { (UIAlertAction) -> Void in self.selectFromCamera() } let libraryAction = UIAlertAction(title: "カメラロールから選択", style: .default) { (UIAlertAction) -> Void in self.selectFromLibrary() } let cancelAction = UIAlertAction(title: "キャンセル", style: .cancel) { (UIAlertAction) -> Void in self.dismiss(animated: true, completion: nil) } alertController.addAction(cameraAction) alertController.addAction(libraryAction) alertController.addAction(cancelAction) present(alertController, animated: true, completion: nil) } func selectFromCamera() { if UIImagePickerController.isSourceTypeAvailable(.camera) { let imagePickerController = UIImagePickerController() imagePickerController.delegate = self imagePickerController.sourceType = UIImagePickerControllerSourceType.camera imagePickerController.allowsEditing = true self.present(imagePickerController, animated: true, completion: nil) } else { print("カメラ許可をしていない時の処理") } } func selectFromLibrary() { if UIImagePickerController.isSourceTypeAvailable(.photoLibrary) { let imagePickerController = UIImagePickerController() imagePickerController.delegate = self imagePickerController.sourceType = UIImagePickerControllerSourceType.photoLibrary imagePickerController.allowsEditing = true self.present(imagePickerController, animated: true, completion: nil) } else { print("カメラロール許可をしていない時の処理") } } func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { if let image = info[UIImagePickerControllerEditedImage] { self.showAlert.image = image as? UIImage } picker.dismiss(animated: true, completion: nil) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. }

良い質問の評価を上げる

以下のような質問は評価を上げましょう

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

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

Swift

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