写真アプリに1.pngという画像データを保存しておき、文字を入力、入力した文字と、画像データのデータ名が** 同じ時** に画面遷移することは可能でしょうか?
写真アプリ 1.png 2.png というデータ名で画像データを保存しておく。
今回作成しているアプリを開き、文字を入力する。「1.png」 決定ボタンをおす(このボタンのみ)
データが存在するとき、ViewController1の画面に画面遷移する。
データが存在しない場合、「データは存在しません」表示をする。
文字を入力 「2.png」 決定ボタンを押す
データが存在するとき、ViewController2の画面に画面遷移する。
データが存在しない場合、「データは存在しません」表示をする
この時のデータを保存している写真アプリは iPhoneにもともとある”写真”というアプリです。
コードとして このように書きましたがどうですか?
Swiift
1import UIKit 2 3import Photos 4 5 6 7class ViewController: UIViewController,UITextFieldDelegate{ 8 9 10 11 var alertController: UIAlertController! 12 13 var nextimage: UIImage! 14 15 func alert1(title:String,message:String){ 16 17 alertController = UIAlertController(title: "データが存在しません", message: "", preferredStyle: UIAlertController.Style.alert) 18 19 alertController.addAction(UIAlertAction(title: "OK", style: .default, handler: nil)) 20 21 present(alertController, animated: true) 22 23 } 24 25 26 27 func alert2(title:String,message:String){ 28 29 alertController = UIAlertController(title: "データを入力してください", message: "", preferredStyle: UIAlertController.Style.alert) 30 31 alertController.addAction(UIAlertAction(title: "OK", style: .default, handler: nil)) 32 33 present(alertController, animated: true) 34 35 } 36 37 38 39 override func viewDidLoad() { 40 41 super.viewDidLoad() 42 43 // Do any additional setup after loading the view. 44 45 libraryRequestAuthorization() 46 47 TextField.delegate = self 48 49 TextField.layer.borderWidth = 1.5 50 51 let paddingView = UIView(frame: CGRect(x: 0, y: 0, width: 8, height: 5)) 52 53 TextField.leftView = paddingView 54 55 TextField.leftViewMode = .always 56 57 self.view.addSubview(TextField) 58 59 } 60 61 62 63 override func didReceiveMemoryWarning() { 64 65 super.didReceiveMemoryWarning() 66 67 } 68 69 70 71 fileprivate func libraryRequestAuthorization() { 72 73 PHPhotoLibrary.requestAuthorization({status in 74 75 76 77 switch status { 78 79 case .authorized: 80 81 self.getAllPhotosInfo() 82 83 case .denied: 84 85 print("拒否されました") 86 87 case .notDetermined: 88 89 print("決まっていない") 90 91 case .restricted: 92 93 print("制限あり") 94 95 @unknown default: 96 97 return 98 99 } 100 101 }) 102 103 } 104 105 106 107 fileprivate func getAllPhotosInfo(){ 108 109 let assets = PHAsset.fetchAssets(with: .image, options: nil) 110 111 var isSuccses: Bool = false 112 113 assets.enumerateObjects({ asset, _, _ in 114 115 let name: String = asset.value(forKey: "filename")as! String 116 117 118 119 if (self.TextField.text == name){ 120 121 isSuccses = true 122 123 let manager = PHImageManager.default() 124 125 manager.requestImage(for: asset, targetSize: CGSize(width: 100, height: 100), 126 127 contentMode: .aspectFill, options: nil){ 128 129 (image, info) -> Void in 130 131 self.nextimage = image 132 133 134 135 } 136 137 138 139 } 140 141 }) 142 143 144 145 if isSuccses{ 146 147 self.performSegue(withIdentifier: "toViewController2", sender: nil) 148 149 } else if (TextField.text! == "" ){ 150 151 alert2(title: "", message: "") 152 153 } else { 154 155 alert1(title: "",message: "") 156 157 } 158 159 } 160 161 override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 162 163 if segue.identifier == "toViewController2"{ 164 165 let nextVC = segue.destination as! ViewController2 166 167 nextVC.image = self.nextimage 168 169 170 171 } 172 173 } 174 175 @IBOutlet weak var TextField: UITextField! 176 177 178 179 @IBAction func Button(_ sender: UIButton) { 180 181 getAllPhotosInfo() 182 183 } 184 185 186 187 188 189 override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 190 191 self.view.endEditing(true) 192 193 } 194 195 196 197 func textFieldShouldReturn(_ textField: UITextField) -> Bool { 198 199 TextField.resignFirstResponder() 200 201 } 202 203 204 205 func textFieldShouldClear(_ textField: UITextField) -> Bool { 206 207 return true 208 209 } 210 211 212 213}
swift
1import UIKit 2 3 4 5class ViewController2: UIViewController { 6 7 8 9 @IBOutlet weak var imageView: UIImageView! 10 11 var image: UIImage! 12 13 var nextVC: UIImage! 14 15 var timer:Timer = Timer() 16 17 18 19 override func viewDidLoad() { 20 21 super.viewDidLoad() 22 23 imageView.image = nextVC 24 25 26 27 // Do any additional setup after loading the view. 28 29 timer = Timer.scheduledTimer(timeInterval: 5.0,target: self,selector: #selector(changeView),userInfo: nil,repeats: false) 30 31 32 33 } 34 35 override func didReceiveMemoryWarning() { 36 37 super.didReceiveMemoryWarning() 38 39 // Dispose of any resources that can be recreated. 40 41 } 42 43 44 45 46 47 @objc func changeView() { 48 49 self.navigationController?.popToRootViewController(animated: true) 50 51 } 52 53 54 55 }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/28 03:38
2020/01/28 03:57
2020/01/28 04:39
2020/01/28 05:07
2020/01/28 05:27 編集
2020/01/28 05:38
2020/01/28 05:41
2020/01/28 06:05
2020/01/28 06:33
2020/01/28 06:44
2020/01/28 07:02
2020/01/28 07:10
2020/01/29 04:36 編集
2020/01/29 04:49
2020/01/29 05:11
2020/01/29 05:28
2020/01/29 06:40
2020/01/30 01:13 編集
2020/01/30 02:08
2020/01/30 02:30
2020/01/30 02:33
2020/01/30 05:58 編集
2020/01/30 06:39
2020/02/02 06:10 編集
2020/02/02 06:07 編集
2020/02/03 00:28 編集
2020/02/03 02:16 編集
2020/02/03 02:16
2020/02/03 02:27 編集
2020/02/03 02:26
2020/02/03 02:38
2020/02/03 02:43
2020/02/03 03:00
2020/02/03 03:05
2020/02/03 03:11 編集
2020/02/03 03:50
2020/02/03 04:51 編集
2020/02/03 04:50
2020/02/03 05:55 編集
2020/02/03 06:18
2020/02/03 06:35
2020/02/03 06:48
2020/02/03 07:01 編集
2020/02/03 07:04 編集
2020/02/03 07:09
2020/02/03 07:16
2020/02/03 07:27
2020/02/03 07:32
2020/02/03 07:41
2020/02/03 07:44
2020/02/03 08:05
2020/02/03 08:10
2020/02/03 08:20
2020/02/03 08:39
2020/02/03 08:43
2020/02/03 08:49
2020/02/03 09:08 編集
2020/02/03 09:16
2020/02/03 09:22
2020/02/03 09:40
2020/02/03 10:40
2020/02/03 12:16
2020/02/03 12:42 編集
2020/02/03 12:44
2020/02/03 12:53 編集
2020/02/03 12:47
2020/02/03 12:49
2020/02/03 12:56
2020/02/03 12:59
2020/02/03 13:02
2020/02/03 13:09
2020/02/03 13:14
2020/02/03 13:21 編集
2020/02/03 13:28
2020/02/03 13:50 編集
2020/02/03 13:51
2020/02/03 13:58
2020/02/03 14:06
2020/02/03 14:07