LoginSignup
1
2

More than 3 years have passed since last update.

セルの再利用がちょっと分かった気がするが全然わからん

Posted at

まとめ

 誰か正確な内容を教えてください……(他力本願)

前提

 tableViewのセルを、インスタンスを毎回生成する方法で作ろうとすると、セルが増えるごとにどんどん重くなって大変。なので、セルを「再利用」しましょう、という話だったと思う。

今回起きた大問題

 SpreadsheetViewという大変便利なライブラリを使って、スクロールする表を実装していた。実装する表はいくつか空きマスがあるタイプのもの(時間割表みたいなやつ)。
 スクロールしたら、なんと空きマスがどんどん埋まっていってしまう!スクロールするたびにどんどん埋まっていって、しまいにはほとんど空きがないような有様に……。

解決法

 セルを呼び出した後に、空きマスのところにも空のデータを入れる。

なぜこれで解決するのか

 ここからはきちんと検証したわけでも勉強したわけでもないので推測になりますが……。
①セルを「再利用」するというのは、プロパティも含めて使い回すことを指す。(新しいインスタンスを作るわけではないので、初期化処理を書かない限りプロパティは初期化されない)
②スクロールするたびにcellForRowAtメソッドが呼び出されていた(これは確認済み)。おそらく、スクロール前に消えていた部分が現れるタイミングで、現れるセルについてcellForRowAtが呼ばれているものと思われる。
③「再利用」されているので、空きマスを描画する際に再利用時のプロパティが適用されてしまう→空きマスがどんどん埋まる??

したがって、再利用時のプロパティを空のデータで置き換えることによって、再描画されても無事空きのまま保たれる、と……。

結局

 誰か正確な内容を教えてください……(自分でも後で勉強してみますm(_ _)m)

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2