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

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

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

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

Q&A

解決済

1回答

1731閲覧

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

asuuuuuuuuu7

総合スコア16

Swift

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

0グッド

0クリップ

投稿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

1 2 3import UIKit 4 5class manage: UIViewController , UIPickerViewDelegate, UITextFieldDelegate,UIImagePickerControllerDelegate, UINavigationControllerDelegate { 6 7 8 9///////////☆//////////アラート表示するimageView 10 11 @IBOutlet weak var showAlert: UIView! 12 13 14/////////////☆//////////商品名とメモのキーボード 15 //商品名 16 @IBOutlet weak var textField3: UITextField! 17 //メモ 18 @IBOutlet weak var textField4: UITextField! 19 20 21 22////////////☆/////////開封日の入力 23 //変数を宣言する 24 //今日の日付を代入 25 //let nowDate = NSDate() 26 let dateFormat = DateFormatter() 27 let inputDatePicker = UIDatePicker() 28 //開封日入力欄 29 @IBOutlet weak var textField: UITextField! 30 31 override func viewDidLoad() { 32 super.viewDidLoad() 33 // Do any additional setup after loading the view, typically from a nib. 34 35/////////////☆////////textField2のoverride 36 pickerView.delegate = self as? UIPickerViewDelegate 37 pickerView.dataSource = self as? UIPickerViewDataSource 38 pickerView.showsSelectionIndicator = true 39 40 let toolbar = UIToolbar(frame: CGRectMake(0, 0, 0, 35)) 41 let doneItem = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(manage.done)) 42 //let cancelItem = UIBarButtonItem(barButtonSystemItem: .cancel, target: self, action: #selector(manage.cancel)) 43 //toolbar.setItems([cancelItem, doneItem], animated: true) 44 toolbar.setItems([doneItem], animated: true) 45 46 47 self.textField2.inputView = pickerView 48 self.textField2.inputAccessoryView = toolbar 49 50/////////////////////// 51 52/////////////☆//////////画像をタップするとアラートを表示 53 54 55 let myTap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(manage.changeColor(_ :))) 56 // イベントが入ったUITapGestureRecognizerをインスタンス化 57 self.showAlert.isUserInteractionEnabled = true 58 // タップを検知することができるようにする 59 60 self.showAlert.addGestureRecognizer(myTap) 61 62 63 64/////////////////////// 65 66 67 // Do any additional setup after loading the view, typically from a nib. 68 69 70 //日付フィールドの設定 71 dateFormat.dateFormat = "yyyy年MM月dd日" 72 //textField.text = dateFormat.string(for: nowDate as Date) 73 self.textField.delegate = self as? UITextFieldDelegate 74 75 76 // DatePickerの設定(日付用) 77 inputDatePicker.datePickerMode = UIDatePickerMode.date 78 textField.inputView = inputDatePicker 79 80 81 82 83 // キーボードに表示するツールバーの表示 84 let pickerToolBar = UIToolbar(frame: CGRect(x: 0, y: 0, width: 320, height: 40)) 85 pickerToolBar.layer.position = CGPoint(x: self.view.frame.size.width/2, y: self.view.frame.size.height-20.0) 86 pickerToolBar.barStyle = .blackTranslucent 87 pickerToolBar.tintColor = UIColor.white 88 pickerToolBar.backgroundColor = UIColor.black 89 90 91 //閉じるボタンのツールバー生成 92 //ボタンの設定 93 // 閉じるボタン 94 let kbToolBar = UIToolbar(frame: CGRect(x: 0, y: 0, width: 320, height: 40)) 95 kbToolBar.barStyle = UIBarStyle.default // スタイルを設定 96 kbToolBar.sizeToFit() // 画面幅に合わせてサイズを変更 97 98 // スペーサー 99 let spacer = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace, target: self, action: nil) 100 101 102 let commitButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.done, target: self, action: #selector(manage.commitButtonTapped)) 103 104 kbToolBar.items = [spacer, commitButton] 105 106 //textField.inputView = pickerToolBar 107 textField.inputAccessoryView = kbToolBar 108 109 110 /////////////☆//////////商品名とメモのキーボードを閉じる 111 // キーボードを閉じる(商品名) 112 // Delegateを設定(Stroyboardで結んでも可) 113 textField3.delegate = self 114 // キーボードを閉じる(メモ) 115 textField4.delegate = self 116 117 118}////////////////////////////////////////////viewDidLoadの終了☆☆☆ 119 120 121/////////////☆//////////商品名とメモのキーボードを閉じるの続き 122 // returnボタン押下で閉じる場合 123 func textFieldShouldReturn(_ textField: UITextField) -> Bool { 124 textField.resignFirstResponder() 125 return true 126 } 127 // 画面タップで閉じる場合 128 //override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 129 //view.endEditing(true) 130 //} 131 132 133 134 135 136///////////☆/////////開封日の入力の続き 137 //閉じるボタンが押されたらキーボードを閉じる 138 func commitButtonTapped (){ 139 140 let pickerDate = inputDatePicker.date 141 textField.text = dateFormat.string(from: pickerDate) 142 143 144 self.view.endEditing(true) 145 } 146 147 148 149///////////☆///////////ジャンルの選択 150 151 @IBOutlet weak var textField2: UITextField! 152 153 var pickerView: UIPickerView = UIPickerView() 154 let list = ["", "1", "2", "3", "4"] 155 156 157 158 159 func numberOfComponents(in pickerView: UIPickerView) -> Int { 160 return 1 161 } 162 163 func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 164 return list.count 165 } 166 167 func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 168 return list[row] 169 } 170 171 func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 172 self.textField2.text = list[row] 173 } 174 175 176 177 func done() { 178 self.textField2.endEditing(true) 179 } 180 181 func CGRectMake(_ x: CGFloat, _ y: CGFloat, _ width: CGFloat, _ height: CGFloat) -> CGRect { 182 return CGRect(x: x, y: y, width: width, height: height) 183 } 184 185//Alertの設定2 186 func changeColor(_ sender: UITapGestureRecognizer) {selectImage()} 187 188 189 func selectImage() { 190 let alertController = UIAlertController(title: "画像を選択", message: nil, preferredStyle: .actionSheet) 191 let cameraAction = UIAlertAction(title: "カメラを起動", style: .default) { (UIAlertAction) -> Void in 192 self.selectFromCamera() 193 } 194 let libraryAction = UIAlertAction(title: "カメラロールから選択", style: .default) { (UIAlertAction) -> Void in 195 self.selectFromLibrary() 196 } 197 let cancelAction = UIAlertAction(title: "キャンセル", style: .cancel) { (UIAlertAction) -> Void in 198 self.dismiss(animated: true, completion: nil) 199 } 200 alertController.addAction(cameraAction) 201 alertController.addAction(libraryAction) 202 alertController.addAction(cancelAction) 203 present(alertController, animated: true, completion: nil) 204 } 205 206 func selectFromCamera() { 207 if UIImagePickerController.isSourceTypeAvailable(.camera) { 208 let imagePickerController = UIImagePickerController() 209 imagePickerController.delegate = self 210 imagePickerController.sourceType = UIImagePickerControllerSourceType.camera 211 imagePickerController.allowsEditing = true 212 self.present(imagePickerController, animated: true, completion: nil) 213 } else { 214 print("カメラ許可をしていない時の処理") 215 } 216 } 217 218 func selectFromLibrary() { 219 if UIImagePickerController.isSourceTypeAvailable(.photoLibrary) { 220 let imagePickerController = UIImagePickerController() 221 imagePickerController.delegate = self 222 imagePickerController.sourceType = UIImagePickerControllerSourceType.photoLibrary 223 imagePickerController.allowsEditing = true 224 self.present(imagePickerController, animated: true, completion: nil) 225 } else { 226 print("カメラロール許可をしていない時の処理") 227 } 228 } 229 230 func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 231 232 if let image = info[UIImagePickerControllerEditedImage] { 233 self.showAlert.image = image as? UIImage 234 235 } 236 237 picker.dismiss(animated: true, completion: nil) 238 } 239 240 241 242 override func didReceiveMemoryWarning() { 243 super.didReceiveMemoryWarning() 244 // Dispose of any resources that can be recreated. 245 } 246 247 248 249 250 251 252

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

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

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

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

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

guest

回答1

0

ベストアンサー

@IBOutlet weak var showAlert: UIView!UIViewUIImageViewにしてみるといかがでしょうか。
showAlert自体はUIImageViewであっても、それをUIViewとして扱おうとしているためimageが見つからない、ということかと思います。

投稿2017/06/01 03:51

Bongo

総合スコア10807

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

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

asuuuuuuuuu7

2017/06/02 03:02

ありがとうございました、解決しました。 凡ミスですみませんでした…。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問