回答編集履歴

1

コードの追加

2020/05/17 09:20

投稿

TsukubaDepot
TsukubaDepot

スコア5086

test CHANGED
@@ -17,3 +17,127 @@
17
17
  ```
18
18
 
19
19
  という処理を行い値渡し(遷移後のクラスのプロパティに値を代入)しているので、同じように適切なプロパティを準備し `UIImage` を渡した上、遷移後の適切なタイミングでその画像を表示すればいいと思います。
20
+
21
+
22
+
23
+ ---
24
+
25
+
26
+
27
+ 全体的な流れを改めて見たのですが、
28
+
29
+
30
+
31
+ > ②pickerViewの項目から"Photo"をタップするとフォトライブラリが開き、選択した画像が、遷移前のimageViewに表示される。
32
+
33
+ > また、”Photo”以外の項目を選ぶと、Assets.xcassetsに登録した画像が、遷移前のimageViewに表示される。
34
+
35
+
36
+
37
+ ということから、「遷移後に表示したい画像は`imageView`に表示される」という前提を立てれば、遷移時に `imageView.image`だけ渡せばよい、ということになります。
38
+
39
+
40
+
41
+ そうすると、
42
+
43
+
44
+
45
+ > ③画面遷移後、Assets.xcassetsに登録した画像であれば、画面をタップすると画像が表示される。
46
+
47
+
48
+
49
+ についてはアセットから読み直さず、遷移時に渡されたデータをそのまま使うということにすれば、多少すっきりとかけそうな気がしました。
50
+
51
+
52
+
53
+ そうすれば、
54
+
55
+
56
+
57
+ > 実現したいこと:②のフォトライブラリで選択した画像も、画面遷移後に表示させたいです。
58
+
59
+
60
+
61
+ は上記(3)のためのコードと共通化することができます。
62
+
63
+
64
+
65
+ つまり、
66
+
67
+ ```
68
+
69
+ import UIKit
70
+
71
+
72
+
73
+ class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource, UINavigationControllerDelegate, UIImagePickerControllerDelegate {
74
+
75
+
76
+
77
+ // 中略
78
+
79
+ @IBAction func nextButton(_ sender: Any) {
80
+
81
+ // 画像がセットされている時だけperformSegueを実行する
82
+
83
+ if sampleView.image != nil {
84
+
85
+ performSegue(withIdentifier: "playPage", sender: nil)
86
+
87
+ }
88
+
89
+ }
90
+
91
+
92
+
93
+ override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
94
+
95
+ if let nextVC = segue.destination as? SecondViewController {
96
+
97
+ // ファイル名ではなく、画像データを渡す
98
+
99
+ nextVC.displayImage = sampleView.image
100
+
101
+ }
102
+
103
+ }
104
+
105
+ }
106
+
107
+
108
+
109
+ class SecondViewController: UIViewController {
110
+
111
+ // 画像データを受け取る変数
112
+
113
+ var displayImage: UIImage!
114
+
115
+
116
+
117
+ override func viewDidLoad() {
118
+
119
+ super.viewDidLoad()
120
+
121
+ }
122
+
123
+
124
+
125
+ @IBAction func addImage(_ sender: UITapGestureRecognizer) {
126
+
127
+
128
+
129
+ // MARK: 渡された画像データから ImageView を作成する
130
+
131
+ let mark = UIImageView(image: displayImage)
132
+
133
+
134
+
135
+ // 以下略
136
+
137
+ }
138
+
139
+ }
140
+
141
+ ```
142
+
143
+ とすればいいと思います。