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

回答編集履歴

3

Swift の文字列について追記

2017/10/04 05:27

投稿

ykws
ykws

スコア1242

answer CHANGED
@@ -31,4 +31,18 @@
31
31
  ```
32
32
 
33
33
  データ構造を採用するなら、プロパティに `completable` を追加して制御するのが自然かなと思います。
34
- [Add completable](https://github.com/ykws/MyItems/commit/b004c52802953490115aa0d83fdc3cbdcb6ddfc4)
34
+ [Add completable](https://github.com/ykws/MyItems/commit/b004c52802953490115aa0d83fdc3cbdcb6ddfc4)
35
+
36
+ 以下の条件文で判定されるのは、「cell 追加 ボタン」「textField.text!」と言う文字列そのものと同じではないとなります。`"` で括ると Swift では `String` となり、その中に変数を書いても展開されません。
37
+
38
+ ```Swift
39
+ if cell?.textLabel?.text != "cell 追加 ボタン" && cell.textLabel?.text != "textField.text!" {
40
+ ```
41
+
42
+ 入力したテキストと比較したいなら、データを格納している `kei` と比較することになるのですが、追記された説明から `kei` を対象にしたい訳ではないと読み取れます。下記のようにした場合は、セルに表示されている文字列= `kei` に格納されている文字列となる訳なので何もチェックできないでしょう。
43
+
44
+ ```Swift
45
+ if cell?.textLabel?.text != "cell 追加 ボタン" && cell.textLabel?.text != kei[indexPath.row] {
46
+ ```
47
+
48
+ なので、遡って、チェック可能なデータなのかプロパティを追加する必要があります。

2

Add completable のリンク追加

2017/10/04 05:27

投稿

ykws
ykws

スコア1242

answer CHANGED
@@ -28,4 +28,7 @@
28
28
 
29
29
  ```Swift
30
30
  if cell?.textLabel?.text != "cell 追加 ボタン" && cell.textLabel?.text != "title" {
31
- ```
31
+ ```
32
+
33
+ データ構造を採用するなら、プロパティに `completable` を追加して制御するのが自然かなと思います。
34
+ [Add completable](https://github.com/ykws/MyItems/commit/b004c52802953490115aa0d83fdc3cbdcb6ddfc4)

1

@fuzzball さんの指摘内容を反映、 @haruka-t さんの追加の質問に回答

2017/10/03 15:08

投稿

ykws
ykws

スコア1242

answer CHANGED
@@ -16,4 +16,16 @@
16
16
  tableView.deselectRow(at: indexPath, animated: true)
17
17
  return
18
18
  }
19
+ ```
20
+
21
+ と書きましたが、 @fuzzball さんの指摘の通り、スクロール可能になるくらいデータを追加し、スクロールするとチェックマークがスクロールする度に付いたり消えたりします。なので、 @fuzzball さんの回答の通り、チェックマークを管理するデータ保存領域が必要になります。
22
+
23
+ もし、セルのタイトルとチェック状態を別々で管理するのが不自然だと感じたら、データ構造を追加する頃合いだと思います。 [チェック可能な TableView](https://github.com/ykws/MyItems) を書いてみましたので参考にしてみてください。
24
+
25
+ > titleの部分にチェックつけないようにしたい
26
+
27
+ 画面キャプチャのように文字通り「title」のセルにはチェックをつけたくないだけでしたら、以下のように条件を論理積で繋げれば、どちらの条件も満たさないセルのみにチェックをつけることが可能になります。
28
+
29
+ ```Swift
30
+ if cell?.textLabel?.text != "cell 追加 ボタン" && cell.textLabel?.text != "title" {
19
31
  ```