回答編集履歴

2

全面書き換え。

2018/09/28 02:15

投稿

fuzzball
fuzzball

スコア16731

test CHANGED
@@ -1,8 +1,48 @@
1
+ 色々と質問などしていますが、先に回答を書いておきます。
2
+
3
+ 前提とする仕様は下記の通りです。
4
+
5
+
6
+
7
+ * セルの背景色は、ハイライト時(押している間)のみ変更する。
8
+
9
+ * セルに乗っているUIの背景色は影響を受けない。
10
+
11
+
12
+
1
13
  ```swift
2
14
 
3
- func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
15
+ class CustomCell: UITableViewCell {
4
16
 
17
+
18
+
19
+ override func setHighlighted(_ highlighted: Bool, animated: Bool) {
20
+
21
+ if highlighted {
22
+
23
+ //押している間のセルの背景色
24
+
25
+ self.contentView.backgroundColor = .lightGray
26
+
27
+ } else {
28
+
29
+ //通常時のセルの背景色
30
+
31
+ self.contentView.backgroundColor = .orange
32
+
33
+ }
34
+
35
+ }
36
+
37
+
38
+
5
- tableView.deselectRow(at: indexPath, animated: false)
39
+ override func setSelected(_ selected: Bool, animated: Bool) {
40
+
41
+ //空っぽにしておく
42
+
43
+ }
44
+
45
+
6
46
 
7
47
  }
8
48
 
@@ -10,10 +50,4 @@
10
50
 
11
51
 
12
52
 
13
- これで選択確定直後に選択が解除されますので、セルの背景色も元に戻ります。
14
-
15
- ただし、押した瞬間や長押し中は変わって(クリアされて)しまいます。
16
-
17
-
18
-
19
- `setHighlighted(highlighted:animated:)`の実装と併せればうきそうですが、どうでしょうか?
53
+ ※TableView側の`.deselectRow(at:animated:)`は、あっても無くてもかまいません。

1

2018/09/28 02:15

投稿

fuzzball
fuzzball

スコア16731

test CHANGED
@@ -16,4 +16,4 @@
16
16
 
17
17
 
18
18
 
19
- `setHighlighted(highlighted:animated:)`の実装と合わせればうまくいきそうですが、どうでしょうか?
19
+ `setHighlighted(highlighted:animated:)`の実装とせればうまくいきそうですが、どうでしょうか?