Как прокрутить UITableView в tableFooterView - PullRequest
21 голосов
/ 31 августа 2009

У меня есть UITableView, содержимое которого динамически изменяется, как стек FIFO. Клетки добавляются снизу и удаляются сверху.

Это прекрасно работает, и я могу прокрутить до indexPath, чтобы новейшее сообщение всегда прокручивалось вниз (как приложение чата).

Теперь .. Я хочу добавить нижний колонтитул в этот раздел таблицы. Вместо использования

SrollToRowAtIndexPath

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

Любые идеи, как я могу это сделать, будут оценены.

Ответы [ 14 ]

0 голосов
/ 03 июля 2015

Эта работа для меня:

- (void)tableViewScrollToBottomAnimated:(BOOL)animated {
    NSInteger numberOfRows = [self.tableView numberOfRowsInSection:0];
    if (numberOfRows) {
        if (self.tableView.tableFooterView) {
            [self.tableView scrollRectToVisible:
             self.tableView.tableFooterView.frame animated:YES
             ];
        } else {
            [self.tableView scrollToRowAtIndexPath:
             [NSIndexPath indexPathForRow:numberOfRows-1 inSection:0]
                                  atScrollPosition:UITableViewScrollPositionBottom
                                          animated:animated
             ];
        }
    }
}
0 голосов
/ 08 февраля 2011

Я использую это:

- (void)scrollToBottom{
   [self.myTable scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:[self.fetchedResultsController.fetchedObjects count] -1 inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:YES];

}

0 голосов
/ 27 января 2010

Отличная идея, искал это сам :) Вот пример кода, который бы сработал:

[tableView reloadData];
NSIndexPath *index = [NSIndexPath indexPathForRow:0 inSection:1];
[tableView scrollToRowAtIndexPath:index
    atScrollPosition:UITableViewScrollPositionBottom animated:YES];

Вы ДОЛЖНЫ иметь хотя бы одну ячейку в нижнем колонтитуле tableView, проблема в том, что она будет видимой. У меня не было времени на тестирование, но я думаю, вы могли бы сделать его действительно маленьким?

Кроме того, вы должны реализовать правильные вещи внутри numberOfSectionsInTableView (хотя бы один для таблицы и один для нижнего колонтитула), numberOfRowsInSection (хотя бы один для нижнего колонтитула, вашего последнего раздела), viewForHeaderInSection (ноль кроме вашей ячейки), heightForHeaderInSection (возможно, если вы установите это значение равным нулю), cellForRowAtIndexPath (добавьте специальный случай для вашей ячейки в нижнем колонтитуле) ...

Этого должно быть достаточно.

0 голосов
/ 31 августа 2009

Я не пробовал, но что происходит, когда вы прокручиваете до последней строки + 1?

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

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