Friday, March 1, 2013

tableviewcellが重ならなくなりました

何が起きてるかというとテキストをクリックして高さを変えた時に、

   -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

}

この記事の”UITableViewは、表示に困らない最低限のセルしか作らない。
この文章から推測されるにUITableViewは、読み込み時に一気にすべてのセルを作成してviewを完成させるのではなく、新しく表示するものをその都度作って表示させるようですね。
そして、すでに表示したセルに関しては以前のviewを引き継いで表示させてます

前のセルが使いまわされているのかな?

調べたところ前のセルが使いまわされていることが原因でした。
とりあえずの解決策として、新しく生成されたセルのsubviewを取り除く以下のコードを書いて良しとしました。


    for(UIView *subview in [cell.contentView subviews]){
        [subview removeFromSuperview];
    }

参考にしたのはこちらです。
ただ、これだと高速でスクロールしたときに表示が重くなるかもしれないので、一応高速化の紹介をしているリンクも貼っておきます

http://blog.v-republic.jp/?p=101
http://blog.natsuapps.com/2010/10/ios-tableview_6774.html
http://iphone-dev.g.hatena.ne.jp/paella/comment?date=20090723

以下の動画はちゃんと重ならないで表示されるようになったよという報告です 笑



次はデータベースですね!
ドットインストールで勉強してきます!

No comments:

Post a Comment