Подтвердить что ты не робот

IOS UITableView Прокрутите в конец раздела

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

[_tableView setContentOffset:CGPointMake(0, CGFLOAT_MAX)];

Мой вопрос в том, как я могу прокрутить до конца раздела 0, так что, когда пользователь добавит ячейку в раздел 0, tableview динамически прокручивается до последней ячейки в разделе 0.

спасибо.

4b9b3361

Ответ 1

Вы можете попробовать с помощью этого кода:

int yourSection = 2;
int lastRow = [tableView numberOfRowsInSection:yourSection] - 1;
[tableView scrollToRowAtIndexPath:[NSIndexPath lastRow inSection:yourSection] atScrollPosition:UITableViewScrollPositionBottom animated:YES];

Вы получаете количество строк в своем разделе, а затем прокручиваете до этого indexPath.

Ответ 2

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

- (void)scrollToTheBottom:(BOOL)animated
{
    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:rowCount-1 inSection:0];
    [self.tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottom animated:animated];
}

Я назвал это выше:

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
            [self scrollToTheBottom:YES];
});

Ответ 3

когда вы вставляете строку в конец, у вас есть свой путь индекса, вы можете использовать scrollToIndexPath метод tableview для прокрутки

[self.liveChannelsTable scrollToRowAtIndexPath:IndexPath atScrollPosition:UITableViewScrollPositionTop animated:YES];

Ответ 4

На всякий случай, это решение в Swift:

extension UITableView {
    func scrollToBottom(animated: Bool = true) {
        let sections = self.numberOfSections
        let rows = self.numberOfRowsInSection(sections - 1)
        self.scrollToRowAtIndexPath(NSIndexPath(forRow: rows - 1, inSection: sections - 1), atScrollPosition: .Bottom, animated: true)
    }
}

Ответ 5

В Swift 3 он обновлен до:

let indexPath = IndexPath(row: self.numberOfRowsInSection(0) - 1), section: 0)
self.commentsTableView.scrollToRow(at: indexPath, at: .bottom, animated: false)