前提・実現したいこと
カメラかアルバムかを選ぶアクションシートが開くクラスを作成して、
メソッドを呼ぶだけで各場所に表示させたい。
発生している問題・エラーメッセージ
カメラのみが開いてしまう。
該当のソースコード
showAlert.swift
import Foundation
import UIKit
class showAlert{
func showAlert(camera :Void,album: Void,view :UIViewController){ let alertController = UIAlertController(title: "プロフィール画像", message: "どちらを使用しますか?", preferredStyle: .actionSheet) let action1 = UIAlertAction(title: "カメラ", style: .default) { (UIAlertAction) in camera } let action2 = UIAlertAction(title: "アルバム", style: .default) { (UIAlertAction) in album } let action3 = UIAlertAction(title: "キャンセル", style: .cancel) alertController.addAction(action1) alertController.addAction(action2) alertController.addAction(action3) view.present(alertController, animated: true, completion: nil) }
}
ViewController.swift
@IBAction func ImageViewTapGesture(_ sender: UITapGestureRecognizer) {
let generator = UINotificationFeedbackGenerator() generator.notificationOccurred(.success) alert.showAlert(camera: openCamera(), album: openAlbum(), view: self) } func openCamera(){ let picker = UIImagePickerController() picker.sourceType = .camera picker.delegate = self // UIImagePickerController カメラを起動する present(picker, animated: true, completion: nil) picker.allowsEditing = true } func openAlbum(){ let picker = UIImagePickerController() picker.sourceType = .photoLibrary picker.delegate = self // UIImagePickerController カメラを起動する present(picker, animated: true, completion: nil) picker.allowsEditing = true } func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { if info[.originalImage] as? UIImage != nil{ let selectedImage = info[.originalImage] as? UIImage UserDefaults.standard.set(selectedImage?.jpegData(compressionQuality: 0.1), forKey: "userImageData") userImageView.image = selectedImage picker.dismiss(animated: true, completion: nil) } }
swift
1 // styleをActionSheetに設定 2 let alertSheet = UIAlertController(title: "title", message: "message", preferredStyle: UIAlertControllerStyle.ActionSheet) 3 4 // 自分の選択肢を生成 5 let action1 = UIAlertAction(title: "1", style: UIAlertActionStyle.Default, handler: { 6 (action: UIAlertAction!) in 7 }) 8 let action2 = UIAlertAction(title: "aka", style: UIAlertActionStyle.Destructive, handler: { 9 (action: UIAlertAction!) in 10 }) 11 let action3 = UIAlertAction(title: "cancel", style: UIAlertActionStyle.Cancel, handler: { 12 (action: UIAlertAction!) in 13 }) 14 15 // アクションを追加. 16 alertSheet.addAction(action1) 17 alertSheet.addAction(action2) 18 alertSheet.addAction(action3) 19 20 self.presentViewController(alertSheet, animated: true, completion: nil)
試したこと
始めたばかりなのでどこが間違っているのかわからず、何をどう試せば良いのかわかりませんでした。
すみません。
補足情報(FW/ツールのバージョンなど)
Xcode 11.5
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/23 08:48