как определить, какие строки отображаются в UITableView

#iphone #objective-c #cocoa-touch

#iPhone #objective-c #cocoa-touch

Вопрос:

Я хочу обновить accessoryViews в UITableView , но только те строки, которые пользователь действительно может видеть.

Как я могу определить, какие строки на самом деле находятся на экране?

Ответ №1:

Используйте метод экземпляра UITableView -visibleCells

 visibleCells
  

Возвращает ячейки таблицы, которые
видно в приемнике.

 - (NSArray *)visibleCells
  

Возвращаемое значение

Массив, содержащий UITableViewCell объекты, каждый из которых представляет видимую ячейку в представлении принимающей таблицы.

Доступность

Доступно в iOS 2.0 и более поздних версиях.

Ответ №2:

У UITableView есть -visibleCells метод для этого — он возвращает NSArray из видимых в данный момент ячеек

Ответ №3:

Реализуйте это, для какой строки вы не хотите добавлять аксессуар.

 -(NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath {

NSUInteger row = [indexPath row];
if (row == 0||row == 2)
    return nil;
return indexPath;
}
  

Ответ №4:

Не думаю, что вам действительно нужно определять видимую строку для обновления accessoryViews. Вы можете просто реализовать это в tableView:cellForRowAtIndexPath: методе datasource.

Но если вы хотите получить видимые строки, вы можете использовать

 - (NSArray *)visibleCells