Есть ли простой способ наблюдать видимые клетки в UITableView?


Мне нужно отслеживать видимые ячейки в UITableView, так как определенные события должны происходить, когда ячейки, представляющие определенные фрагменты данных, становятся видимыми. UITableView, похоже, не соответствует KVO для -indexPathsForVisibleRows или -visibleCells, и нет метода UITableViewDelegate, который дает крючок для уведомления о том, что видимые ячейки изменились.

Есть ли способ сделать это, кроме ручного отслеживания моего собственного массива и добавления / удаления объектов каждый раз, когда я вставляю / удаляю строку, перезагрузите таблицу, или называются методы типа -tableView:cellForRowAtIndexPath:?

3 6

3 ответа:

Как насчет метода UITableViewDelegate:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath

Без взлома / подклассов UITableView или UITableViewCell ответ, похоже, будет нет.

Если вы не делаете слишком много экзотических вещей с самой таблицей, таких как переупорядочивание и удаление/вставка строк, вы можете использовать метод scrollviewDidScroll: и другие методы делегата scrollview, которые передаются tableview.

В этом методе вы можете вызвать visibleCells и перейти оттуда.