У меня есть UITableView с pagingEnabled. Каждая ячейка занимает область просмотра таблицы. Значение, каждая ячейка имеет ту же высоту и ширину, что и таблица. Я использую пользовательские ячейки, у которых есть свойство name. Я хотел бы отобразить имя текущей (видимой) ячейки в ярлыке. Это отлично работает для первой и последней ячеек, но что-то между ними не так просто. Проблема в том, что cellForRowAtIndexPath вызывается дважды для этих средних ячеек. Вот как выглядит прокрутка от первой до последней ячейки, а затем назад. Я перечислил индексы в порядке, когда cellForRowAtIndexPath запускается для этой строки:
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 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
Я мог бы установить объект NSDate, чтобы определить, находится ли я в средней строке. Разница в предыдущем времени с течением, я буду знать. Однако, если пользователь быстро прокручивает ячейки, это, вероятно, не работает. Есть ли другой способ сделать это?
Я пробовал использовать вариации свойств visiblecells, но это не сработало. UITableView будет загружать следующую ячейку, даже если она не видна, заставляя ее быть частью видимых ячеек.