前提・実現したいこと
配列で保存した画像をランダムで表示し、表示された画像のみを保存して別のビューで表示したいです。
画面A:Viewを開いた時に表示された画像のみを保存して、
画面B:別のViewに遷移した際にTableViewに表示したいです。
画面A
var imageArray: [UIImage] = [ UIImage(named: "ぞう.jpeg")!, UIImage(named: "うさぎ.jpeg")!, UIImage(named: "あるぱか.jpeg")!, UIImage(named: "ぶた.jpeg")!, UIImage(named: "はむ.jpeg")!, UIImage(named: "ひよこ.jpeg")!, UIImage(named: "いぬ.jpeg")!, UIImage(named: "くま.jpeg")!, UIImage(named: "はち.jpeg")!, UIImage(named: "ねこ.jpeg")!, UIImage(named: "ぱんだ.jpeg")!, UIImage(named: "ぺんぎん.jpeg")!, ] let udf = UserDefaults.standard override func viewDidLoad() { super.viewDidLoad() imageset() } private func imageset(){ let iv = UIImageView(frame: CGRect(x: 20, y: 90, width: 60, height: 60)) //imgArray = [img01,img02,img03,img04,img05,img06,img07,img08,img09,img10,img11,img12] let ret = Int(arc4random_uniform(12)) //iv.image = imgArray[ret] iv.backgroundColor = UIColor.systemBlue iv.layer.cornerRadius = iv.frame.height * 0.5 //1辺の長さ * 0.5にする iv.clipsToBounds = true self.view.addSubview(iv) } @IBAction func save(_ sender: Any) { var imagedata: [String] = udf.array(forKey: "tweet") as? [String] ?? [] imagedata.append(iv.image) udf.set(imagedata, forKey: "tweet") //Use of unresolved identifier 'iv'が出る self.dismiss(animated: true, completion: nil) } }
画面B
override func viewDidLoad() { super.viewDidLoad() } override func viewDidAppear(_ animated: Bool) { imgArray = UserDefaults.standard.array(forKey: "myImage") as! [UIImage] tableview.reloadData() } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = UITableViewCell(style: .default, reuseIdentifier: "Cell") cell.selectionStyle = .none cell.textLabel?.numberOfLines = 3 cell.textLabel?.text = tweetArray[indexPath.row] //画像の横からテキストを始めたい。どうやるんだ? let iv = UIImageView(frame: CGRect(x: 15, y: 10, width: 60, height: 60)) iv.backgroundColor = UIColor.systemBlue iv.image = imgArray[indexPath.row] //Userdefaultsで保存した画像を呼び出したい iv.layer.cornerRadius = iv.frame.height * 0.5 iv.clipsToBounds = true cell.contentView.addSubview(iv) return cell } }
エラー箇所
@IBAction func save(_ sender: Any) { var imagedata: [String] = udf.array(forKey: "tweet") as? [String] ?? [] imagedata.append(iv.image) udf.set(imagedata, forKey: "tweet") //Use of unresolved identifier 'iv'が出る self.dismiss(animated: true, completion: nil) }
ツールのバージョン
Xcode : Version 11.0
Swift : Apple Swift version 5.1
最終的なコード
var imgArray:[UIImage] = [] var img: [String] = ["ぞう","うさぎ","あるぱか","ぶた","はむ","ひよこ","いぬ","くま","はち","ねこ","ぱんだ","ぺんぎん"] var img01 :UIImage = UIImage(named:"ぞう")! var img02 :UIImage = UIImage(named:"うさぎ")! var img03 :UIImage = UIImage(named:"あるぱか")! var img04 :UIImage = UIImage(named:"ぶた")! var img05 :UIImage = UIImage(named:"はむ")! var img06 :UIImage = UIImage(named:"ひよこ")! var img07 :UIImage = UIImage(named:"いぬ")! var img08 :UIImage = UIImage(named:"くま")! var img09 :UIImage = UIImage(named:"はち")! var img10 :UIImage = UIImage(named:"ねこ")! var img11 :UIImage = UIImage(named:"ぱんだ")! var img12 :UIImage = UIImage(named:"ぺんぎん")! let udf = UserDefaults.standard var imageName = "" override func viewDidLoad() { super.viewDidLoad() imageset() } private func imageset(){ let iv = UIImageView(frame: CGRect(x: 20, y: 90, width: 60, height: 60)) let ret = Int(arc4random_uniform(12)) imageName = img[ret] iv.image = UIImage(named: imageName) iv.backgroundColor = UIColor.systemBlue iv.layer.cornerRadius = iv.frame.height iv.clipsToBounds = true self.view.addSubview(iv) } @IBAction func save(_ sender: Any) { var imagedata: [String] = udf.array(forKey: "imageName") as? [String] ?? [] imagedata.append(imageName) udf.set(imagedata, forKey: "imageName") self.dismiss(animated: true, completion: nil) } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/28 03:55
2019/10/28 04:12
2019/10/28 04:57
2019/10/28 05:01 編集
2019/10/28 07:06
2019/10/28 07:09
2019/10/28 07:55
2019/10/28 17:37