web-dev-qa-db-ja.com

iOS UITableViewセクションの一番下までスクロール

2つのセクションを含むテーブルビューを作成します。プログラムですべてのセクションにセルを追加できます。追加するときに、次を使用してテーブルビューの最後までスクロールします

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

私の質問は、セクション0の最後までスクロールする方法です。ユーザーがセクション0にセルを追加すると、テーブルビューはセクション0の最後のセルまで動的にスクロールします。

ありがとう。

13

あなたはこのコードで試すことができます:

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

セクション内の行数を取得し、そのindexPathまでスクロールします。

22
Benetz

上記のすべての提案は、少なくともドキュメントに基づいて正しいです。しかし、私の場合は機能しませんでした。スクロールしてテーブルビューの最後の行を表示できませんでした。そのためには、スクロールに遅延を追加する必要がありました。

- (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];
});
15
Shirish Kumar

最後に行を挿入すると、そのインデックスパスがあり、tableviewのscrollToIndexPathメソッドを使用してスクロールできます。

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

念のため、これは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)
    }
}
2

Swift 3では、次のように更新されています。

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