質問するログイン新規登録

回答編集履歴

1

回答追記

2018/12/13 16:49

投稿

TakeOne
TakeOne

スコア6299

answer CHANGED
@@ -4,4 +4,21 @@
4
4
  func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
5
5
  cell.backgroundColor = UIColor.blue
6
6
  }
7
+ ```
8
+
9
+ ------------------
10
+ (12/14 回答追記)
11
+
12
+ willDisplayの中で `tTableView.cellForRow(at: indexPath)`を使ってセルを取得しようとしても、そのセルはまだ表示されていない(これから表示しようとしている)セルなので、cellForRowメソッドで取得できません。cellForRowメソッドはindexPath位置に表示されているセルを取得するメソッドです。
13
+
14
+ そもそも、これから表示しようとしているセルはwillDisplayの引数で`cell`という名前の引数に入っていますのでわざわざcellForRowで取得する必要ないです。
15
+
16
+ それと、セルの移動中はcontentViewの中の背景色は全て透明にされてしまいますので、willDisplayの中でgreenViewやblueViewに背景色をつけても結局移動中は透明にされてしまいます。
17
+
18
+ 最初の回答通りですが、willDisplayの中でcontentView内のUI部品の背景色を制御するのではなく、次の通りセル自体の背景色を制御すればセルの移動中は透明でなくgreenViewと同じ色になりませんか?
19
+
20
+ ``` swift
21
+ func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
22
+ cell.backgroundColor = #colorLiteral(red: 0.721568644, green: 0.8862745166, blue: 0.5921568871, alpha: 1)
23
+ }
7
24
  ```