私はpagingEnabledを持つUITableViewを持っています。各セルは、表の表示領域を占有します。意味は、各セルは表と同じ高さと幅です。私はnameプロパティを持つカスタムセルを使用しています。現在の(表示可能な)セルの名前をラベルに表示したいと思います。これは最初と最後のセルでうまく動作しますが、中にあるものはそれほど簡単ではありません。問題は、cellForRowAtIndexPathがこれらの中間セルに対して2回呼び出されることです。ここからは、最初のセルから最後のセルまでスクロールした後に戻るように見えます。私は真ん中の列にいるかどうかを検出するためにNSDateオブジェクトを使用して設定することができUITableViewから可視セルを取得するpagingEnabled
Row indexPath.row
0 0 //view loads and table appears
1 1,2 //user scrolls to second cell. cellForRowAtIndexPath fires twice. First time indexPath.row is one and second time it is two. This causes cell two's name to display in the label, rather than cell one.
2 2,3
3 3
//user starts scrolling back to first cell
2 1,2
1 1,0
0 0
:私は、その行のcellForRowAtIndexPath火災として順にインデックスをリストアップしました。以前の時間と現在の時間を分けることで、わかります。しかし、ユーザーがセルをすばやくスクロールすると、おそらく動作しません。それを行う別の方法がありますか?
私はvisiblecellsバリエーションのバリエーションを使用しようとしましたが、うまくいかなかった。 UITableViewは、表示されていない場合でも次のセルをロードし、可視セルの一部になります。
これは唯一の問題は、ソートされていないということです。それらを並べ替えたり、配列に正しい順序で追加したりする簡単な方法はありますか? –
+1これも私の質問に答えます。 –
[tableView visibleCells]で可視のセルを取得することもできます。 – George