Прокрутите строку UITableView вверх, даже если таблица содержит только несколько строк - PullRequest
0 голосов
/ 19 июня 2010

У меня есть UITableView, который иногда имеет только несколько строк. Я хотел бы конкретную строку, например, 2 из 3, чтобы появиться в верхней части таблицы. Однако, когда количество строк не заполняет всю таблицу, вызов следующего не дает никакого эффекта:

[TableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:indexOfTopItem inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:NO]

Есть ли способ заставить строку отображаться сверху даже при ограниченном количестве строк в таблице? Спасибо

Ответы [ 3 ]

0 голосов
/ 19 июня 2010

Я не уверен, что точно понимаю, что вы хотите, но если вы хотите разместить определенную ячейку в верхней части таблицы, почему бы не переставить данные вместо представлений?

Предполагая, что данные вашей ячейки (строки) не жестко запрограммированы, вы можете сделать что-то вроде:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    if ([indexPath row] == 0){
        // Load the data you want to appear at the top
    }else {
        // Load the rest of the data
    }
}

Вы должны вручную отслеживать данные верхней строки, однако, это может быть не лучшим решением.

В качестве альтернативы, если ваши данные находятся в массиве, вы можете поменять нужный элемент сверху на первый элемент в массиве, а затем вызвать [myTableView reloadData] для перезагрузки данных. В этом случае вам не нужно менять cellForRowAtIndexPath.

Конечно, это не очень эффективно, так как вы манипулируете массивами и перезагружаете свою таблицу, но если в вашей таблице всего несколько строк и вам не нужно часто выполнять этот обмен, это может быть приемлемо.

0 голосов
/ 29 июня 2010

Единственный способ добиться этого - установить для таблицы contentOffset. Это обеспечит появление нужной строки в верхней части таблицы, даже если строки не заполняют всю таблицу.

0 голосов
/ 19 июня 2010

Измените порядок или используйте кнопку, которая показывает предыдущие даты. Вы можете использовать метод numberOfRowsInSection, чтобы проверить BOOL, а затем установить правильное количество строк. Затем в методе cellForRowAtIndexPath вы снова проверяете BOOL и возвращаете действительные ячейки. Нажмите кнопку, установите BOOL и вызовите метод tableView's reloadData.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...