質問編集履歴

4

書式の改善

2021/04/02 21:50

投稿

pi.chan_san
pi.chan_san

スコア3

test CHANGED
@@ -1 +1 @@
1
- CollectionViewを選択した時、imageviewの色合いを変えたい
1
+ 【Swift】CollectionViewを選択した時、imageviewの色合いを変えたい
test CHANGED
File without changes

3

書式の改善

2021/04/02 21:50

投稿

pi.chan_san
pi.chan_san

スコア3

test CHANGED
File without changes
test CHANGED
@@ -210,10 +210,6 @@
210
210
 
211
211
  self.pageScrollView.delegate = self
212
212
 
213
- //navigationbarの下からのy座標になる。bar系が全部グレーになってしまったのでやめました。
214
-
215
- // edgesForExtendedLayout = []
216
-
217
213
 
218
214
 
219
215
  //生成したcollectionViewのdataSourceとdelegteを紐づける
@@ -318,8 +314,6 @@
318
314
 
319
315
 
320
316
 
321
- //ここでは画面の横サイズの半分の大きさのcellサイズを指定
322
-
323
317
  return CGSize(width: (screenSize.width-50) / 2, height: (screenSize.width-50)/2 + 50)
324
318
 
325
319
  }

2

情報の追加

2021/04/02 13:48

投稿

pi.chan_san
pi.chan_san

スコア3

test CHANGED
File without changes
test CHANGED
@@ -268,6 +268,28 @@
268
268
 
269
269
  }
270
270
 
271
+   func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
272
+
273
+
274
+
275
+ let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CollectionViewCell", for: indexPath) as! CollectionViewCell
276
+
277
+
278
+
279
+ let imagepath = imageList[indexPath.item]
280
+
281
+ let cellText = recipeList[indexPath.item]
282
+
283
+ cell.setupContents(textName: cellText, imagepath: imagepath)
284
+
285
+
286
+
287
+ return cell
288
+
289
+ }
290
+
291
+
292
+
271
293
  //イベントの設定
272
294
 
273
295
  extension MainChooseViewController: UICollectionViewDelegate {

1

書式の改善

2021/04/02 13:47

投稿

pi.chan_san
pi.chan_san

スコア3

test CHANGED
File without changes
test CHANGED
@@ -154,6 +154,160 @@
154
154
 
155
155
  ```
156
156
 
157
+ ```Swift
158
+
159
+ import UIKit
160
+
161
+
162
+
163
+ class MainChooseViewController: UIViewController {
164
+
165
+
166
+
167
+ //以下のdictionaryは、collectionviewの中身です
168
+
169
+ var recipeList = ["pasta", "omelette rice", "Yellowtail teriyaki", "scallop cooked rice"]
170
+
171
+ var imageList = ["3ac4720cd39fcb7bc418a360734f4769f593c4e0.jpg", "26fb8d743b3e3e7645a4a947f4db74cb.jpg.webp", "i=https%3A%2F%2Fimage.excite.co.jp%2Fjp%2Ferecipe%2Frecipe%2F0%2F0%2F0075f14723f0ca3a9bcf5062871299b4%2F8e6ae4fb7223467b78bfd88ab8559dc0.jpeg&small=400&quality=100&type=jpeg.jpeg", "recipe.jpg"]
172
+
173
+ private let collectionView: UICollectionView = {
174
+
175
+
176
+
177
+ //セルのレイアウト設計
178
+
179
+ let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
180
+
181
+
182
+
183
+ //各々の設計に合わせて調整
184
+
185
+ layout.scrollDirection = .vertical
186
+
187
+ layout.minimumInteritemSpacing = 0
188
+
189
+ layout.minimumLineSpacing = 10
190
+
191
+
192
+
193
+ let collectionView = UICollectionView( frame: CGRect(x: 20, y: 100, width: screenSize.width - 40, height: screenSize.height/2 + 50 ), collectionViewLayout: layout)
194
+
195
+ collectionView.backgroundColor = UIColor.white
196
+
197
+ //セルの登録
198
+
199
+ collectionView.register(CollectionViewCell.self, forCellWithReuseIdentifier: "CollectionViewCell")
200
+
201
+ return collectionView
202
+
203
+ }()
204
+
205
+
206
+
207
+ override func viewDidLoad() {
208
+
209
+ super.viewDidLoad()
210
+
211
+ self.pageScrollView.delegate = self
212
+
213
+ //navigationbarの下からのy座標になる。bar系が全部グレーになってしまったのでやめました。
214
+
215
+ // edgesForExtendedLayout = []
216
+
217
+
218
+
219
+ //生成したcollectionViewのdataSourceとdelegteを紐づける
220
+
221
+ collectionView.dataSource = self
222
+
223
+ collectionView.delegate = self
224
+
225
+
226
+
227
+
228
+
229
+ view.addSubview(collectionView)
230
+
231
+ mainView.addSubview(collectionView)
232
+
233
+
234
+
235
+ if pageControl.currentPage == 0 {
236
+
237
+ backButton.isHidden = true
238
+
239
+ } else {
240
+
241
+ backButton.isHidden = false
242
+
243
+ }
244
+
245
+
246
+
247
+ if pageControl.currentPage == 2 {
248
+
249
+ nextButton.isHidden = true
250
+
251
+ }
252
+
253
+
254
+
255
+ }
256
+
257
+
258
+
259
+
260
+
261
+ override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
262
+
263
+ super.touchesBegan(touches, with: event)
264
+
265
+
266
+
267
+ self.view.endEditing(true)
268
+
269
+ }
270
+
271
+ //イベントの設定
272
+
273
+ extension MainChooseViewController: UICollectionViewDelegate {
274
+
275
+ func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
276
+
277
+ print("callされました")
278
+
279
+ let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CollectionViewCell", for: indexPath) as! CollectionViewCell
280
+
281
+ cell.onTapped(true)
282
+
283
+ }
284
+
285
+ }
286
+
287
+
288
+
289
+ //cellのサイズの設定
290
+
291
+ extension MainChooseViewController: UICollectionViewDelegateFlowLayout {
292
+
293
+
294
+
295
+ func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
296
+
297
+
298
+
299
+ //ここでは画面の横サイズの半分の大きさのcellサイズを指定
300
+
301
+ return CGSize(width: (screenSize.width-50) / 2, height: (screenSize.width-50)/2 + 50)
302
+
303
+ }
304
+
305
+
306
+
307
+ }
308
+
309
+ ```
310
+
157
311
 
158
312
 
159
313
  ### 試したこと
@@ -168,7 +322,7 @@
168
322
 
169
323
  その時、collectionViewを試しに選択してみたら、
170
324
 
171
- onTapped関数内の
325
+ cellクラス、onTapped関数内の
172
326
 
173
327
  `chooseImage.image = UIImage(ciImage: filteredImage!)`の部分に
174
328
 
@@ -176,10 +330,12 @@
176
330
 
177
331
  `Fatal error: Unexpectedly found nil while unwrapping an Optional value`
178
332
 
179
- このようなエラーが出ました。この原因はなんとなく想像できます。
333
+ このようなエラーが出ました。printの"callされました"は呼び出されていて、このエラーの原因はなんとなく想像できます。
180
334
 
181
335
  情報の一つとして参考にしていただけたら嬉しいです。
182
336
 
337
+ わかる方、お力添えよろしくお願いします。
338
+
183
339
 
184
340
 
185
341
  ### 補足情報(FW/ツールのバージョンなど)